您的位置:首页 > 其它

2016书单总结--分布式服务框架原理与实战

2017-01-14 22:46 453 查看

2016书单总结–分布式服务框架原理与实战

MVC–RPC–SOA–MSA

MVC(model-view-controller)–垂直架构,同进程,本地访问,由于维护成本、团队效率、定制周期、可靠性原因转为RPC

*RPC(remote-produce-call)–服务提供者、服务发布者、本地服务代理、通信、序列化、

(Thrift(IDL)、Avro、Hessian)、跨进程访问,由于服务治理,转向SOA*

*SOA(service oriented architecture)–服务松耦合、服务无状态、服务可发现、可服务治理、服务化,由于原子服务的独立性,转向MSA

三个关键点–通信、序列化、协议栈

三个流行–阿里dubbo、淘宝hsf、亚马逊coral service*

MSA(micro service architecture)–服务原子化、独立化

2. 分布式服务框架特型–CCDFGGPPPRRV–12特性

C–control/流量控制–当资源成为瓶颈时,服务框架对消费者进行限流,保护核心功能

- 静态流控--针对访问流速(QPS)、动态配额分配(指定T内分配QPS)、动态配额申请制(留一部分需要的再申请)
- 动态流控--保住系统资源和应用资源(动态流控因子、分级流控、并发控制、连接控制)


C–caller/服务调用–同步/异步

- 服务调用两种模式--OneWay(只有请求,没有应答/消息推送)、请求-应答模式(HTTP)
- 同步服务调用--T=t1+t2+t3+t4
- 异步服务调用--Future/Future-Listener
- 并行服务调用--并发调用
- 泛化调用--泛化引用(客户端的POJO用MAP)/泛化实现(服务端的POJO用MAP)


D–degrade/服务降级–保障核心SLA,进行容错/屏蔽降级

- 容错降级--对故障服务做业务逻辑放通
- 屏蔽降级--将非核心业务调用空、异常、执行本地特定操作


F–fail/集群容错–最终的服务调用成功/通信故障、服务端超时、服务端调用失败

- Failover(失败自动切换)--设置最多调用次数(3)--幂等性服务(调用1次与调用N次效果相同)
- Failback(失败通知)--失败通知消费者,尤其决定后续如何处理
- Failcache(失败缓存)--失败后,在指定T周期进行N次重发
- Failfast(快速失败)--失败后,忽略异常,保障核心服务
- 容错机制扩展


G–gray/服务灰度发布–在白与黑之间,能够平滑过渡的一种发布方式

- AB test--一部分人用B,一部分人用A,当B没问题,A的那部分再转为B


G–govern/服务治理–满足线下管控,线上运行

- 服务建模、服务组装、服务部署、服务管理
- 服务治理目标--防止业务服务架构腐化、快速故障定界定位、服务微管控、服务生命周期管理


P–publish/服务发布和引用–将本地接口发布为远程服务

- 支持XML、注解、API
- 服务发布设计--本地实现类封装成代理、服务发布指定协议、服务提供者信息注册
- 服务引用设计--本地接口调用转换成远程服务调用、服务地址本地缓存、远程服务引用
- 最佳实践--对等设计原则、启动顺序原则、配置扩展、警惕网络风暴


P–parmeter/参数引用–服务发布者与服务提供者之间进行参数的传递

- 内部传参--业务内部传递参数、服务框架与业务之间
- 外部传参--消费者与提供者之间(保留Map或自定义参数)


P–priority/服务优先级–支持按照用户配置的优先级进行服务调用

- 基于线程调度器方案
- Java优先队列
- 加权优先队列
- 服务迁入迁出


R–route/服务路由–消费者如何选择合适的服务提供者

- 透明化路由--基于服务注册中心的订阅发布(dubbo的zookeeper)/消费者缓存服务提供者地址
- 负载均衡(RRCHA)--随机、轮询、服务调用时延(差值)、一致性哈希(相同的请求发往同一提供者)、粘滞连接(保持连接的状态)
- 本地路由优先策略--injvm/innative
- 路由规则--灵活配置需求、基于表达式的条件路由(消费者条件、分隔符、提供者规则)/脚本路由


R–registry/服务注册中心–管理服务发布/订阅的配置管理节点

- 服务提供者--发布服务
- 服务消费者--调用远程服务
- 服务注册中心--目录管理器
- 特性--支持对等集群、提供CRUD接口、安全加固、订阅发布机制、可靠性


V–version/服务多版本–服务的多版本,即服务提供者与服务消费者版本需要对应

- dubbo--interface+group+version(major.minor.micro)
- 服务热部署、服务热插拔

3. MSA--micro service architecture--微服务架构--微服务专注于做一件事情
- 应用解耦
- 分而治之
- 敏捷交付
- 基于Docker容器部署微服务


4. 示例代码位于– https://github.com/undergrowthlinear/2016MyBookSummary.git

最简单的RPC框架实现代码在com.undergrowth.distribute.service.framework.RpcTest.main有演示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  soa 分布式