《分布式服务框架原理与实践》- 总结一下吧

  我们听过无数的道理,却仍旧过不好这一生。额,我说的是技术!

  《分布式服务框架原理与实践》这本书,一直在讲一些大道理,和具体的业务和我本身的工作已经没多大关系了。但是,不管怎么样,还得总结下吧。别人的道理,并不是自己的道理!自己的的道理才是硬道理,哪怕是烂道理!

  个人觉得这本书讲得太宽泛,或者说讲得不够深入,或者文学范不够,总之,感觉不够吸引人,如果赶时间,还是算了吧。

  他列举了许多需要注意的方面,而且就每个方面以单独的章节进行前因,后果的展示,应该说有比较好的或者统一的数据结构结构吧。下面稍微写写每个大道理。

第1章 应用架构的演进

  这单其实比较扯淡,但是呢,又不得不说。因为并不一定所有人都明白以前是什么什么样的。

  从传统垂直架构(单机巨无霸应用),缺点: 应用大,业务复杂,代码无从复用,扩展差。

  到RPC架构(远程方法调用,简单多机部署,框架如 apache thrift, avro-rpc, hessian, grpc),缺点:简单rpc调用,会存在复杂的路由管理,依赖复杂无法厘清,服务治理问题。

  到SOA服务架构,缺点:链路复杂,应用庞大,成本高,具体缺点未列举,其着重点是解决异构应用的服务化。

  到微服务架构,缺点:链路复杂,应用庞大,成本高,具体缺点未列举,其着重点是尽可能的服务拆分。

第2章 分布式服务框架入门

  服务的拆分,纵向拆分(按业务领域),横向拆分(将公共部分抽离出来)

  服务的治理,生命周期管理,服务容量规划,运行期治理,服务安全。

  DUBBO,HSF,Coral Service。

  架构原理: RPC层,Filter Chain层,Service层。

  功能特性: 服务订阅发布,服务路由,集群容错,服务调用,多协议,序列化方式,统一配置。

  可靠性: 服务注册中心,清除单点故障,链路健壮性。

  服务治理: 服务运行状态管控,服务监控,服务生命周期管理,故障快速定界定位,服务安全。

第3章 通信框架

  长连接还是知连接。长连接更省资源,远程通信是常态,链路重建更耗时。

  BIO还是NIO。BIO同步阻塞,简单,与线程一一对应,伸缩能力差。NIO,多路复用,并发性能超出机器最大连接句柄限制。Netty。

  服务端设计原则,只提供上层API,屏蔽通信细节,具有可扩展性。

  可靠性设计,主要应对网络闪断、网络超时、通信对端宕机等情况下,仍能提供正常服务。

  链路有效性检测分三个层面,TCP层面心跳检测(Kepp-Alive);协议层心跳检测,主要存在于长连接协议中;应用层心跳检测,发送心跳消息;(ping-pong, ping-ping)

  断连重连机制,链路中断后,等等INTERVAL时间,再次发起连接。消息缓存重发,资源优雅释放。

  性能差三宗罪:网络传输方式问题,BIO还是NIO;序列化性能差;纯种模型问题。

   netty使用误:不指定线程池线程大小;i/o线程池使用不当,导致通信线程膨胀。

第4章 序列化与反序列化

  Serializable, xml, json, MessagePack, fastjson, Protocol Buffer, Thrift, Avro.

第5章 协议栈

  对接异构第三方服务时,通常会选择HTTP/RESTFUL等公有协议;对于内部不模块的服务调用,往往会选择性能较高的二进制私有协议。

  链路创建,由调用方发起创建,双方握手后创建。链路关闭,发生异常后或者接收到关闭信号后关闭链路。

第6章 服务路由

  基于服务注册中心的订阅发布;消费者缓存提供者地址;

  负载均衡(随机、轮循、调用时延、一致性哈希、粘滞连接(会话保持));

  路由策略,本地路由优先,条件规则路由,脚本路由规则。

第7章 集群容错

  容错策略:失败切换(failover),失败通知(failback),失败缓存(failcache), 快速失败(failfast),扩展。

第8章 服务调用

第9章 服务注册中心

  支持对等集群,提供CRUD接口,安全加固,订阅发布机制,可靠性。zookeeper。

第10章 服务发布和引用

  服务提供者需要支持通过配置、注释、API调用等方式,把接口发布成远程服务;消费者可能通过对等方式引用远程服务提供者,实现服务的发布和引用。

  服务框架支持乱序启动,即提供者、消费者谁先启动都可以。

第11章 服务灰度发布

  灰度是指在黑白之间的颜色,能够平滑过渡的一种发布方式。即机器一部分一部分地发布,将一部分用户引到新功能上,另一部分仍在老功能上,测试完成后,再全量发布。

  灰度应能支持失败回滚。

第12章 参数传递

  业务参数,框架参数。

第13单 服务多版本

  服务端版本升级不影响客户端。热部署。

第14章 流量控制

  动态配额分配制,动态配额申请制。

  动态流控,分级流控。

  并发控制,服务端全局控制,消费者流控。

  连接控制,服务端、客户端连接数流控。

第15章 服务降级

  为保证核心服务的服务质量等级(SLA),停掉不太重要的业务(降级)。

  屏蔽降级,容错降级(业务放通),业务降级。

第16章 服务优先级调度

  当系统资源非常有限时,为保证高优先级服务正常运行,需要降低非核心服务的调用频次。

  线程调度器方案,生成不同优先级的线程池,根据服务决定使用哪个线程池进行运行从而保证优先级。java优先队列。加权优先队列。服务迁入迁出控制。

第17章 服务治理

  多团队问题,服务安全问题,线下服务管控问题,线上保障服务SLA,故障快速定界定位。

  flume日志采集。

第18章 分布式消息跟踪

  埋点日志,采集和存储埋点日志,计算和展示,TraceID,调用上下文。

第19章 可靠性设计

  基于注册中心状态检测,链路有效状态检测,服务健康检测。

  故障隔离:进程级故障隔离,VM级故障隔离,物理机级故障隔离,机房故障隔离。

第20章 微服务架构

  应用解耦,分而治之。

  docker。

  总体来说,本书对本人没多大意义,就当消遣消遣吧。

原文地址:https://www.cnblogs.com/yougewe/p/8283206.html