课程前述:
架构的演进
单体架构
垂直架构
分布式架构
- 抽取公共模块,进行RPC调用
SOA架构
ESB
微服务架构
架构演进
Dubbo整合spring$SpringMVC
SERVICE 模块的改在
- 将service暴漏有Spring管理改为Dubbo管理
- 变更配置文件,增加注册中心zookeeper的配置
在zookeeper中查看是否有provider\consumer进行注册
cloud.tencent.com/developer/a…
Dubbo-admin的安装与使用
实际上就是一套服务的监控机制【Monitor】
- ui 需要安装nodeJs,前端使用VUE编写的,需要nodejs环境运行
- server模块需要修改链接zk注册中心的地址。
Duboo的序列化
传输java对象,需要将对象序列化,implements Serializable.
Duboo高级特性——地址缓存
zk注册中心挂了,消费端仍然可以访问服务端,消费者第一次通过zk能达到服务提供者,然后缓存到本地
超时与重试
服务消费者调用服务提供者发生阻塞、等待等情况。
Duboo提供了超时机制,如果超时,则服务端会断开链接。避免资源耗尽。
超时可以在@Service中配置,也可以在消费端@Reference中配置。
如果@Service中与@Reference中都进行配置,则以@Reference中为准
建议在服务的提供方进行配置【提供者更清楚服务的情况】。
Dubbo高级特性——多版本
- 多版本:
- 在提供方提供多个版本的服务,@Service中定义version特性。
- 在消费方指定要消费的版本:
Dubbo高级特性——负载均衡
- 负载均衡的策略:
在@Service中配置服务的权重,在@Refence中指定负载均衡的策略。
-
Random:按照权重随机。
-
RoundRobin:按权重轮询
-
LeastActive:最少活跃调用数。
-
具体每种loadBalance的名称可以【双击shift,然后搜索loadBalance】进行查询,举例如下:
关于【最少活跃调用数】: 官方解释:最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差,使慢的机器收到更少。
例如,每个服务维护一个活跃数计数器。当A机器开始处理请求,该计数器加1,此时A还未处理完成。若处理完毕则计数器减1。而B机器接受到请求后很快处理完毕。那么A,B的活跃数分别是1,0。当又产生了一个新的请求,则选择B机器去执行(B活跃数最小),这样使慢的机器A收到少的请求。 ———————————————— 原文链接:blog.csdn.net/revivedsun/…
Dubbo-集群容错
有多种容错机制:
- 在@Reference中配置即可,@Service无需配置
- 某个机器信息异常,可以还用集群容错机制,在集群中多个物理机节点中调用重试等。
具体dubbo支持的集群容器的设置:
- failover:一般用于读操作,一个物理机节点挂了可以切换到其他的物理机节点
- failsafe:一般用于写操作:只要尝试一些,挂了就挂了。
Dubbo高级特性——服务降级
服务有重要的和不重要的,针对不同的服务设置不同的服务降级机制。
附录:
- war包直接使用内置tomcat进行启动: