java分布式系统操作 java 分布式有哪些技术( 二 )


SOA服务化架构
感觉soa架构应该是在rpc之前出现,用来解决异构系统的交互,通常的实现是通过ESB,WSDL来处理 。其粒度通常来说是比较粗的 。也存在服务治理方面的问题 。
微服务
MSA也是一种服务化架构风格,正流行ing,服务划分
1. 原子服务,粒度细;
2. 独立部署,主要是容器;
分享篇文章:云栖肥侠的文章 微服务(Microservice)那点事。
MSA与SOA的对比:

    服务拆分粒度:soa首要解决的是异构系统的服务化,微服务专注服务的拆分,原子服务;服务依赖:soa主要处理已有系统,重用已有的资产,存在大量服务间依赖,微服务强调服务自治,原子性,避免依赖耦合的产生;服务规模:soa服务粒度大,大多数将多个服务合并打包,因此服务实例数有限,微服务强调自治,服务独立部署,导致规模膨胀,对服务治理有挑战;架构差异:微服务通常是去中心化的,soa通常是基于ESB的;服务治理:微服务的动态治理,实时管控,而soa通常是静态配置治理;交付:微服务的小团队作战 。
感觉在有了docker后,微服务这个概念突然火了起来,总结就是微服务 容器 DevOps 。
分布式服务框架入门 背景
应用从集中式走向分布式
随着业务的发展导致功能的增多,传统的架构模式开发,测试,部署整个流程变长,效率变低,后台服务的压力变大,只能通过硬件扩容来暂时缓解压力,但解决不了根本性问题:
    应用规模变大,开发维护成本变高,部署效率降低;代码复用:原来是本地api调用,导致一些公用功能可能是按需开发,不统一,随意等问题;交付面临困难:主要是业务变得复杂,新增修改测试变得困难,拉长整个流程 。
通用法宝:拆分,大系统拆小系统,独立扩展和伸缩 。
    纵向:分业务模块;横向:提炼核心功能,公共业务;
需要服务治理
大拆小,核心服务提炼后,服务的数量变多,而且需要一些运行态的管控,这时候就需要服务治理:
    服务生命周期管理;服务容量规划;运行期治理;服务安全 。
服务框架介绍
Dubbo
阿里开源的Dubbo应该是业界分布式服务框架最出名的了吧,看过公司的rpc框架,Dubbo的扩展性比我们的好的多了,我们的框架每次升级,改动都很多,改天要看下Dubbo的源码了解了解扩展性 。
HSF
淘宝的体量决定了他对极致性能的追求,HSF跨机房特性挺牛 。
Coral Service
这个没听说过,孤陋寡闻了 。
框架设计
架构原理
万变不离其中,这张图可以概括rpc的一些通用原理:
细化了下:
    rpc层:底层的通讯框架,通讯协议,序列化和反序列化;服务发布订阅;服务治理;

    推荐阅读