转载

Spring Cloud实现云原生

就是用Spring Boot搭建的一个个实际业务的Server。本文假设一个简单的业务场景:总计有2个服务:

  • 用户服务(后文简称A): 连接数据库,存储用户信息。
  • BFF服务(后文简称B): 访问用户服务,创建和查询用户报务。

Eureka -> 服务发现

在微服务系统里,各服务互相调用,如何让各个服务能找到其它服务?不能用ip地址hardcode, 需要一个注册中心,所有的服务都注册在那里,其它服务就可以通过服务名去互相调用。这样问题就简化成各个服务和服务中心沟通的问题了。 创建一个新服务:Eureka, 添加spring-cloud-starter-eureka-server依赖, 并@EnableEurekaServer. 然后给A和B分别添加@EnableDiscoveryClient.

Ribbon -> 负载均衡

A可能有多个实例,B在调用A时,就可以根据A的实例负载情况动态调整。 Code

Hystrix -> 断路器

当Api不可用时,会用fallback function做返回值,如果失败的Api Call非常多,会打开Circuit。 Code

Feign -> 服务间调用(替换RestTemplate)

Feign可以拦截所有服务间调用,理论上也可以做断路器和负载均衡。 Code

Zuul -> api网关

Api网关可以统一整个微服务系统的入口,外部如手机客户端只需访问网关,由网关整合和调用所有的请求。同时网关可以做统一认证,动态路由和负载均衡。 Code

Config-server -> 统一配置各服务

每个服务都有不同环境的配置,如Dev环境的配置和Prod环境的配置,为了让配置更加灵活,我们可以把这些配置放到一个Repo中,然后通过Config-Server去获取这些配置。这样便可以实现更改配置而不需要重启服务。 Code

原文  https://juejin.im/post/5e1c335cf265da3df716d75c
正文到此结束
Loading...