久乐棋牌_深圳新闻网

作者: admin

    作者简介:FADA技术专家Leo,主要负责微服务和云本机方向的研究与应用,重点研究API网关和服务治理的成熟解决方案。

    近年来,微服务理念逐渐流行。每个企业都建立了自己的微服务平台。SpringCloud框架作为微服务体系结构领域的一员,是不容忽视的,也是许多企业选择作为构建自己微服务平台的基石。SpringCloud框架有许多组件,看起来有点令人眼花缭乱。

    框架的核心是服务治理。只要去掉服务治理工具箱中的注册表(eureka)、服务路由(gateway)、服务调用(feign)组件,再加上配置中心,就可以构建一个小巧美观的微服务系统。然而,Spring Cloud框架的配置中心Spring Cloud Config由于缺乏接口、权限管理以及需要总线支持来实现实时配置的有效性而受到批评。许多公司选择其他开源配置中心框架,如ctrip开源Apollo。最终,最小的微服务系统如下:

    当微服务启动时,它将配置从配置中心统一拉出来,然后将自己的服务名称和地址注册到注册表,并保留心跳。当请求到达时,目标服务地址和端口在从注册表中提取的注册表信息列表中找到,然后通过外部组件远程调用目标服务的接口。

    与SOA体系结构相比,微服务体系结构具有更细的粒度和更多的子服务类型。随着业务的扩展,微服务系统将迅速扩展。这对微服务系统的集装箱化部署、自动扩展、业务监控、异常报警等功能提出了更高的要求。

    值得一提的是,K8S体系结构还提供了服务发现功能。比较尤里卡的注册和发现机制。K8S使用DNS作为其服务,发现它比Eureka更兼容异构系统。此外,K8S入口还可以使用nginx、traefik等组件引入外部流量,同时提供流量监控、熔合、限流、监控UI等功能。它可以取代Spring云架构中的网关角色。

    如果我们想保留整个Spring云架构,还可以借助K8S框架为微服务系统提供容器部署和扩展功能。那么,如何在K8S中部署Apollo和Eureka服务,以便在此类服务崩溃后由其他子服务找到,并计划在其他节点重新启动?如何在K8S中部署网关网关,引入外部流量,提供高可用性和负载平衡能力?

    上面是Apollo和Eureka服务部署场景。借助K8S提供的DNS服务发现和服务虚拟POD组功能,为apolloconfig pod和eureka pod创建相应的服务。需要注意的一点是,Apollo配置pod可以共享服务,但Eureka pod需要创建自己的服务。其他公共服务使用Apollo配置服务和Eureka服务的服务名称作为配置中心和注册表的地址。当公共服务提取配置或注册时,它首先查询与coredns服务的服务名相对应的服务地址。当访问请求被发送到相应的服务时,负载将在后端POD上平衡,最终到达真正的服务实例。

    如果Apollo Pod或Eureka Pod崩溃并重新部署到其他节点,则服务和Pod之间的标签映射关系保持不变,并且新的Pod仍将由服务找到以转发流量。如果修改并重新部署apolloconfig服务或eureka服务的集群IP,由于服务名称不变,普通服务仍然可以通过coredns找到新的服务集群IP,然后找到配置中心服务实例和注册表服务实例o。F其后端。

    以下是Spring Cloud Gateway的部署方式:

    K8S有四种服务类型,其中“负载均衡器”类型可以实现引入外部流量的功能,但需要云平台负载均衡器的支持,使用范围有限。“node port”类型是打开所有节点上的节点端口以接收外部流量。为gateway pod创建“nodeport”类型的网关服务,然后选择多个节点访问地址,并将这些地址和nodeport端口配置为外部负载平衡器。此配置没有特殊要求