微服务
- 正式定义
“微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并且以轻量级机制(通常是HTTP REST API)通信。这些服务是围绕业务能力建立的,并且可以由完全自动化的部署机构独立部署。这些服务的集中管理只有最低限度,可以用不同的编程语言编写并使用不同的数据存储技术。”
—— James Lewis and Martin Fowler
- 微服务体系结构由轻量级、松散耦合的服务集合组成。每个服务都实现了单个业务功能。理想情况下,这些服务应该是具有足够的内聚性,可以独立地开发、测试、发布、部署、扩展、集成和维护。
- 看看
SpringCloud组成
Restful
- 经典面向老婆解释 小结:
- 看Url就知道要什么
- 看http method(post、get、delete。。)就知道干什么
- 看http status code(500 ,400,404)就知道结果如何
HTTP协议
集群
- 同一个业务,部署在多个服务器上
- 同一个业务就是干的事情一模一样
- 多个服务器上的同一个业务注册在多个不同的注册中心上
- 多个不同的注册中心相互关联
分布式
- 多个系统协同合作完成一个特定任务的系统。
- 分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA(服务拆分)架构的,服务之间也是通过rpc来交互或者是webservice来交互的。
- 生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。
- 微服务重在解耦合,使每个模块都独立。分布式重在资源共享与加快计算机计算速度。
- 微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
注册中心
- 注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。
- 注册中心详细介绍
CAP原则
名称 | 内容 |
---|---|
Consistency 一致性 | 集群中各个结点的数据总是一致的,因此你可以向任意结点读写数据,并总是能得到相同的数据 |
Availability 可用性 | 可用性表示你总是能够访问集群,即使集群中的某个结点宕机了 |
Partition tolerance 分区容忍 | 容忍集群持续运行,即使他们中存在分区(两个分区中的结点都是好的,只是分区之间不能通信) |
负载均衡
- 然后部署多个相同的子系统在不同的服务器上(这叫集群),部署在不同服务器上的同一个子系统应做负载均衡。
- 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元(相同业务)上执行,负载均衡的关键在于【均匀】。在集群中做的。