2016书单总结--分布式服务框架原理与实战
2017-01-14 22:46
453 查看
2016书单总结–分布式服务框架原理与实战
MVC–RPC–SOA–MSAMVC(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有演示
相关文章推荐
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- 新闻
- 在VMware网络测试“专用VLAN”功能
- C#分布式事务的超时处理实例分析
- Erlang分布式节点中的注册进程使用实例
- 浅析PHP分布式中Redis实现Session的方法
- Memcached 分布式缓存实现原理简介
- Redis实现分布式队列浅析
- C++实现的分布式游戏服务端引擎KBEngine详解
- ASP.NET通过分布式Session提升性能
- 基于spring+quartz的分布式定时任务框架实现
- Spring+Mybatis+Mysql搭建分布式数据库访问框架的方法
- Python使用multiprocessing实现一个最简单的分布式作业调度系统
- 分享一个简单易用的RPC开源项目—Tatala
- 手把手教你配置Hbase完全分布式环境
- 搭建分布式架构2--CentOs下安装Tomcat7(环境准备)
- 搭建分布式架构4--ZooKeeper注册中心安装
- 分布式消息队列XXL-MQ
- 分布式编程—Zookeeper部署以及几种经典使用场景
- 搜索应用参考示例XXL-SEARCH