版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29479041/article/details/83621616
1、微服务
James Lewis & Martin Fowler 2014年3月25日写的《Microservices》:微服务是一种架构风格。
- 一系列微小的服务共同组成
- 跑在自己的进程里
- 每个服务为独立的业务开发
- 独立部署
- 分布式管理
微服务特点:异构
- 不同语言
- 不同类型的数据库
2、其他常见架构形态
- 单体架构
优点:容易测试、容易部署
缺点:开发效率低、稳定性不高、代码维护难、扩展性不够、部署不灵活
- 基于Ajax的前后端分离
- 分布式
旨在支持应用程序和服务的开发,可以利用物理架构由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。
分布式和集群有什么区别:分布式是个工作方式,集群是个物理形态。一句话,就是:“分头做事”与“一堆人”的区别。
3、微服务架构的基础框架/组件
- 服务注册发现:
客户端服务发现:B向注册中心注册,A通过注册中心拿到一堆B的地址,通过某种机制,从众多可用的B中挑出一个,然后通过IP地址找到B。
服务器端服务发现:B向注册中心注册,代理从众多可用的B里面挑选一个出来给A,然后A再根据IP地址去找B。
- 服务网关(Service Gateway)
- 后端通用服务(也称中间层服务Middle Tier Service)
后端在启动的时候会将地址信息注册到服务注册表里面。
- 前端服务(也称边缘服务Edge Service)
前端服务通过查询注册表发现调用后端服务,作用:对后端服务做必要的聚合和裁剪后暴露给外部不同的设备。聚合:对多个API调用逻辑进行聚合,从而减少客户端的请求数(合二为一)。裁剪:刚好跟聚合相反,根据不同的需求,返回不同的术语。
4、微服务两大实现手段
Dubbo | Spring Cloud | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务网关 | 无 | Spring Cloud Netflix Zuul |
服务跟踪 | 无 | Spring Cloud Sleuth |
断路器 | 不完善 | Spring Cloud Netflix Hystrix |
分布式配置 | 无 | Spring Cloud Config |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
5、Spring Cloud
- Spring Cloud是一个开发工具集,含了多个子项目
- 利用Spring Boot的开发便利
- 主要是基于对Netflix开源组件的进一步封装
- Spring Cloud的服务调用方式
- REST
- Node.js的eureka-js-client
- Spring Cloud 微服务架构图