美文网首页
Spring Cloud实现云原生

Spring Cloud实现云原生

作者: 林晨chris | 来源:发表于2020-01-13 16:54 被阅读0次

    Spring Cloud的一整套云原生

    业务server

    就是用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

    Sidecar -> 接入非JVM服务

    不是所有的服务都是Java服务,那如何让非Java服务接入Spring Cloud的微服务系统中?
    我们添加一个Nodejs 服务。创建一个Sidecar的Spring项目, @EnableSidecar,并配置Sidecar的port到Nodejs的 server即可。
    Code

    Sleuth/Zipkin -> 追踪

    Zipkin可以追踪各个Server的调用情况。
    [图片上传失败...(image-614738-1578906640802)]

    Code

    相关文章

      网友评论

          本文标题:Spring Cloud实现云原生

          本文链接:https://www.haomeiwen.com/subject/ldknactx.html