服务化
服务化的一个好处就是,不限定服务的提供方使用什么技术选型,能够实现大公司跨团队的技术解耦
RESTful API
RPC(Remote Procedure Call Protocol)远程过程调用协议
典型的RPC实现包括:Dubbo、gRPC、Thrift、Netty等。 Netty是由JBOSS提供的一个java开源框架
gRPC(谷歌的) 、dubbo(阿里的)、Spring Cloud(Netflix(奈飞)) Thrift(FB的)
RPC框架要向调用方屏蔽各种复杂性,要向服务提供方也屏蔽各类复杂性
建立在Socket之上的一种多进程间的通信机制
本地过程调用,
在Windows编程中,称为LPC;
在linux编程中,更习惯称之为IPC,即进程间通信
企业间需要相互发现和调用对方提供的Web服务,
UDDI作为一个公共的、开放的服务注册中心,可以让企业将自己的Web服务信息发布到UDDI注册中心,从而使其他企业能够发现并调用这些服务
Feign 是一个声明式、模板化的 HTTP 客户端,它简化了编写 Web 服务客户端的过程<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
服务框架
在微服务架构中,存在三个关键角色:服务提供者、服务消费者和服务注册中心 。
分布式配置中心设计与实现:Apollo
Nacos(Naming and Configuration Service)是由阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
1.服务注册与发现(Service Registry & Discovery) 服务注册与发现 → API 网关:网关通过注册中心发现服务地址,实现动态路由
服务注册和服务发现
. 服务注册中心的设计与实现: 存储大量的服务实例信息 网络通信 服务健康检查
Spring Cloud 提供了多种服务注册与发现的实现方式,其中最常用的是 Eureka 和 Consul
Eureka 是 Netflix 开源的服务发现组件,Spring Cloud 对其进行了集成,使其成为 Spring Cloud 生态系统中的一部分
Consul 是 HashiCorp 开源的服务发现与配置工具,Spring Cloud 也提供了对 Consul 的支持。 。
etcd提供服务注册功能,服务提供者将自身地址(主机、端口)注册到etcd集群,并通过心跳保持状态更新;
服务发现则由服务消费者从etcd查询可用服务实例列表,实现动态路由选择
Zookeeper
Nacos
服务注册有两种模式
自注册模式:也称为客户端/直连模式,服务消费者直接与注册中心交互,获取服务提供者的地址信息
代理模式:也称为服务端模式,服务消费者通过一个代理(如API网关或服务发现代理)来获取服务提供者的地址信息
服务发现
客户端发现模式
服务端发现模式
2. API 网关(API Gateway)
API 网关是微服务架构的入口,负责统一处理外部请求,并将请求路由到相应的后端服务。
3. 配置中心(Configuration Center)
4. 服务熔断与降级(Circuit Breaker & Fallback)
5. 分布式追踪与日志(Distributed Tracing & Logging
服务提供者(Product Service)
服务消费者(Order Service)
Feign 客户端:
python
四个模块:网关、用户中心、鉴权中心、文档中心。接下来就是服务的注册和调用。
参考
通过 Python+Nacos实现微服务,细解微服务架构 https://cloud.tencent.com/developer/article/2426423