分享人:张泉良
1.背景介绍
2.知识剖析
3.常见问题
4.编码实战
5.扩展思考
6.参考文献
7.更多讨论
从RMI开始,我们逐渐接触到了一个新的概念,即服务架构。通过对服务架构的了解,我们接触了几个概念:SCA、SOA、微服务,那么什么是SCA,什么是SOA,什么是微服务呢?
为了解决ALL in One ,提出了SOA,而SCA是给SOA定义了一个规范,微服务是为了有效的拆分应用,实现敏捷开发和快速部署,使用了微服务,运维上产生了自动部署的需求(DevOps,Docker容器)
(1) 什么是SCA
服务组件体系结构 (SCA) 是一个规范,它描述用于使用 SOA 构建应用程序和系统的模型。它可简化使用 SOA 进行的应用程序开发和实现工作
(2) 什么是SOA
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。 接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。 这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
SCA Assembly Model
SCA 的基本工件是组件,它是 SCA 的基本构成单元。组件包含一个经过配置的实现实例
SCA服务组件的特点
(1) 服务组件一般是粗粒度。
(2) 服务组件的接口是标准的接口。
(3) 服务组件实现与语言无关,即不绑定语言。
(4) 服务组件由组件容器管理,提供服务,不由程序代码控制。
(3) 什么是微服务
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。 每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
主流微服务框架有: Dubbo和SpringCloud
(4) 什么是注册中心
注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。
比如说,我们手机中的通讯录的两个使用场景:
当我想给张三打电话时,那我需要在通讯录中按照名字找到张三,然后就可以找到他的手机号拨打电话。 李四办了手机号,那么他把手机号告诉我,我把李四的号码存进通讯录,后续,我就可以从通讯录找到他。
(1)为什么需要注册中心
(2) Dubbo中的注册中心:自带的Simple、Redis和Zookeeper
Dubbo的组件:
(3) Zookeeper的负载过程
(1):CAP
CAP原则:一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),不能同时成立。
一致性:它要求在同一时刻点,分布式系统中的所有数据备份都处于同一状态。
可用性:在系统集群的一部分节点宕机后,系统依然能够响应用户的请求。
分区容错性:在网络区间通信出现失败,系统能够容忍。
而一致性的强制数据统一要求,必然会导致在更新数据时部分节点处于被锁定状态,此时不可对外提供服务,影响了服务的可用性
(2):SOA和微服务的对比
SOA----->>>微服务
开发上:SOA中,团队需要了解常见的通信机制,而微服务,服务可以独立于其他服务运行和部署。可以轻易扩展服务或者更新版本
SOA鼓励组件的共享,而微服务尝试通过“边界”来最小化共享
如果需要多个协议相互访问,优先SOA
微服务中的服务组件通常有一个单一的目的,而在SOA服务中通常包含更多的业务功能,并且通常将它们实现为完整的子系统
https://zhuanlan.zhihu.com/p/31524280
https://blog.csdn.net/aglne/article/details/70210774
https://juejin.im/post/5bb77923f265da0af3348aa3
https://juejin.im/post/5ab09943f265da238f125ee8
欢迎大家讨论