服务化
服务化的优点
1.代码统一化,业务逻辑封装在服务内,同样的业务逻辑调用服务,对于上层代码量轻,易于维护
2.资源控制,数据库链接资源等等。mysql、es等等链接也是重要的资源,将需要维护的数据库的资源控制在服务内,若压力较大,横向扩容
3.业务拆分,减轻同一数据库的压力,便于项目灵活变动,不同服务可能使用不同的数据库
服务化的缺点
1.数据一致性,跨服务的数据一致性:分布式事物、tcc事物、消息事物等等,一般业务的难以维护
2.日志的查找,多个服务之间的日志,难以查找,需要介入服务治理工具,日志跟踪、日志收集、日志聚合查询等等,参考dapper
3.服务本身的预警、分析、降级等等
dubbo monitor
dubbo为阿里的一个开源的rpc框架,以不再维护,后期当当网进行过二次开发dubbox,大多数互联网公司都在使用该框架。
dubbo monitor为dubbo的一个监控工具,可以在上monitor 看到接口的TPS、并发、响应时间,可惜的是没有对monitor进行报表汇总工作。
当流量激增的时候,调用方容易出现超时的情况,超时较多接口失败,影响用户体验。接口没做并发处理、幂等处理,还容易造成数据重复提交、脏读等情况。
provider压力较大的情况,容易出现线程池用光,调用方新的请求不能响应,系统吞吐降低。
dubbo monitor本身收集各个接口的调用、执行数据。却没有进行预警、和报表处理
改造
2种思路
1.接入dubbo monitor对其添加报警功能
2.接入一个新的中间轻量级服务,对其monitor添加数据分析、报表、报警功能