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


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

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

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

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

    第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。

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

  • 相关阅读:
    奔跑的绵羊js
    13.差分
    12.子矩阵的和
    11.前缀和
    10.高精度除法
    9.高精度乘法
    8.高精度减法
    7.高精度加法
    6.数的三次方根
    5.数的范围
  • 原文地址:https://www.cnblogs.com/yougewe/p/8283206.html
Copyright © 2020-2023  润新知