作者
: joyo
来源: https://joyohub.com/micro-server/
但是,上述的好处是有条件的:应用不那么复杂 。
1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)
2)独立的进程(java的tomcat,nodejs等)
3)轻量级的通信(不是soap,是http协议或者是Tcp协议)
4)基于业务能力(类似电商的订单服务、用户服务、商品服务等等)
5)独立部署(迭代速度快)
6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择,只要提供调用就可以)
优点一:拆分系统
优点二:分治管理
优点三:简化部署和增强扩展
缺点一:拆分大小限制
缺点二:增加编码的复杂性
缺点三:数据存储难度增大
缺点四:测试完整服务复杂
缺点五:微服务架构模式应用的改变将会波及多个服务。
比如,你需要更新服务C,然后是B,最后才是A,幸运的是,许多改变一般只影响一个服务,而需要协调多服务的改变很少。
缺点六:受网络带宽影响大
微服务体系按照请求接入,由外到内的顺序,一般将整体架构分为 接入层 、 网关层 、 业务服务层 、 支撑服务层 、 平台服务层 、基础设施层 六层。
负载均衡作用,运维团队负责
反向路由,安全验证,限流等
基础服务和领域服务
服务网关可以这样简单理解:
服务网关 = 路由转发 + 过滤器
1.路由转发:接收一切外界请求,转发到后端的微服务上去;
2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。
举个例子,以
权限校验
的需求来讲,我们有三个方案来解决:
方案一 :每个服务都实现一遍权限校验
的代码
方案二 :将权限校验
的代码抽取出来并作为公共服务,然后其他所有服务都依赖这个服务
方案三 :写到服务网关的前置过滤器中,所有请求过来进行权限校验
方案一
方案二
方案三
路由转发
负载均衡
安全认证
日志记录
数据转换
请求过程
API 网关实现对比
引入服务网关后的微服务架构如上,总体包含三部分:服务网关、open-service和service。
访问流程
注意点
因此,我们可以分为两个角度去分析原理:
角度一:“服务提供者”向“服务注册中心”进行注册
角度二:“服务消费者”向“服务注册中心”查询和调用服务
Eureka是由Netflix开源,其架构如下图:
传统项目中,我们是怎么处理各类配置参数问题的:
1.一般是静态化配置
2.配置文件无法区分环境
3.配置文件过于分散
4.配置修改无法追溯
上面只是拿配置文件的形式来举例,有的项目会采用数据库配置,虽然灵活一点,但是依旧不能完全解决上述问题。
「配置中心」的方案是如何解决这些痛点的:
那么,具有上述特性的「配置中心」是如何解决上面传统配置所面临的问题的呢?
Apollo项目的Github地址
XDiamond项目的Github地址
Qconf项目的Github地址
Disconf项目的Github地址
2022-08-12
2022-08-11
2022-08-09
2022-08-08
2022-08-07
如果你觉得这篇文章不错,那么,下篇通常会更好。备注“公众号”添加微信好友(微信号:zhuan2quan)。