一.服务的演变
单体服务
一个项目中包含了所有项目。通常来说,如果一个war/jar包包含一个应用的所有功能,则称之为单体架构
SOA
核心目标是把一些通用的,会被多个上层服务调用的共享业务提取成独立基础服务,这些被提取出来的共享服务相对来说比较独立,并且可以重用。所以在SOA中,服务是最核心的抽象手段,业务被划分为一些粗粒度的业务服务和业务流程。
SOA主要解决的问题是:
1>信息孤岛
2>共享业务的重用
微服务
那么被SOA拆分出来的服务是否也需要以业务功能为维度来进行拆分和独立部署,以降低业务的耦合及提升容错性?微服务就是这样一种解决方案。我们可以把SOA看成微服务的超集合,也就是多个微服务组成一个SOA服务
二.微服务
Spring Cloud 技术栈
Spring Cloud Netflix Spring Cloud Alibaba
Eureka 服务注册与发现 Nacos 分布式配置中心
Zuul 服务网关 Nacos 服务注册与发现
Ribbon 负载均衡 Sentinel 流量控制和服务降级
Feign 远程服务的客户端代理 RocketMq 消息驱动
Hystrix 断路器 Seate 分布式事务
Dubbo RPC通信
服务发现的概念
在传统的系统部署中,服务运行在一个笃定地已经IP和端口上,如果服务需要调用另一个服务,那么可以通过地址直接调用。但是在虚拟化或者容器化的环境中,服务的****实例启动和销毁是很频繁的,服务的地址也是动态变化的。这种情况下,就需要服务发现机制了。
服务发现技术的对比
| Nacos | Eureka | Consul | CoreDNS | Zookeeper | |
|---|---|---|---|---|---|
| 一致性协议 | CP+AP | AP | CP | - | CP |
| 健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | Keep Alive | ||
| 负载均衡策略 | 权重/metadata/Selector | Ribbon | Fabio | RoundRobin | |
| 雪崩保护 | 有 | 有 | 五 | 五 | 无 |
| 自动注销实例 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| 访问协议 | HTTP/DNS | HTTP | HTTP/DNS | DNS | TCP |
| 监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| 多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
| 跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
| SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 支持 |
| Dubbo集成 | 支持 | 不支持 | 支持 | 不支持 | 支持 |
| K8S集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 |

本文探讨了从单体架构到SOA再到微服务的演变过程,详细介绍了微服务架构的特点及其关键技术栈,包括Spring Cloud和Dubbo等。同时对比了不同服务发现技术如Eureka、Nacos和Consul等的特性。

被折叠的 条评论
为什么被折叠?



