Dubbo&ZK分布式服务化改造(三)——Dubbo服务高级特性及服务划分原则

一、Dubbo集群容错模式

1、Failover Cluster

     失败自动切换,当出现失败,重试其它服务器。(缺省)

     通常用于读操作,但重试会带来更长延迟。

2、Failfast Cluster

     快速失败,只发起一次调用,失败立即报错。

     通常用于非幂等性的写操作,比如新增记录。

3、Failback Cluster

     失败自动恢复,后台记录失败请求,定时重发。

     通常用于消息通知操作。

4、Forking Cluster

     并行调用多个服务器,只要一个成功即返回。

     通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过forks="2"来设置最大并行数。

5、Broadcast Cluster

     · 广播调用所有提供者,逐个调用,任意一台报错则报错。(2.1.0开始支持)

     · 通常用于通知所有提供者更新缓存或日志等本地资源信息。


二、Dubbo服务划分

1、服务划分目标

     抽取系统中独立的业务模块服务化,按业务独立性进行垂直划分,抽象出基础服务层

2、子系统划分把控:合理划分,过细过粗都不行

3、注意事项

     1)表:避免出现A服务关联B服务的表的数据操作;服务一旦划分了,那么数据库即便没分开,也要当成db表分开了来进行编码;否则AB服务难以进行垂直拆库

     2)避免服务耦合度高,依赖调用;如果出现,考虑服务调优。

     3)避免分布式事务,不要拆分过细。

三、Dubbo接口划分

     1、接口尽可能大粒度,接口中的方法不要以业务流程来,这个流程尽量在方法逻辑中调用,接口应代表一个完整的功能对外提供;

     2、接口应以业务为单位,业务相近的进行抽象,避免接口数量爆炸

     3、参数先做校验,在传入接口。

     4、要做到在设计接口时,已经确定这个接口职责、预测调用频率

四、Dubbo服务高级特性

1、启动检查

     在启动某服务时,先检查该服务所依赖的服务是否可用,不可用则抛出异常,以便上线时,能及早发现问题,默认check=“true”;

2、负载均衡

     针对某一方法在db管控台进行配置-

     负载算法:随机(Random LoadBalance)、轮循(RoundRobin)、最少活跃调用数(LeastActive ,越活跃接收请求的概率越大)、一致性hash(ConsistentHash )

3、线程模型:threadpool threads

     最大线程数计算方式 ulimit -u命令计算服务器可执行最大线程数

4、直连提供者

     指定连接local的服务,不对生产环境造成影响 url="localhost:20818“

5、只订阅

     只订阅服务,自己不注册,例如该服务正在测试,先不能向zk中注册避免其他服务调用它报错

6、只注册

     只注册服务,不订阅;应用在集群中该服务器上无该服务需要调用的服务,就让他只注册,指定调用其它服务器上的可用服务

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值