首页 快递行业资讯 快递中心的spring-cloud实践

快递中心的spring-cloud实践

布景     特性 分布式/版别化装备 服务注册和发现 路由 service - to - service调用 负载均衡 分布式/版别化装备 Spring cloud包括两个根本模…


布景

   

特性

分布式/版别化装备

服务注册和发现

路由

service - to - service调用

负载均衡

分布式/版别化装备

Spring cloud包括两个根本模块:

spring cloud context和spring cloud commons

    Spring cloud context即spring cloud运用上下文,包括引导上下文(加载bootstrap装备)作为主运用程序父上下文、装备加密解密(运用java jce加密装备文件,运用EnvironmentDecryptApplicationInitializer类在运用初始化时解密装备)、装备改写规模(RefreshScope)、操控端点(/env/reset,/refresh,/restart等)功用。

    Spring cloud commons 供给服务注册(运用ServiceRegistry笼统),服务发现(运用DiscoveryClient笼统,经过@EnableDiscoveryClient敞开),负载均衡(运用LoadBalancerClient笼统,经过@LoadBalanced启用),断路器(经过@EnableCircuitBreaker敞开)等形式的一个共用笼统层,为详细实践供给一致笼统。

实践运用过程中,咱们运用了

spring cloud consul作为服务注册和发现组件

spring cloud config作为分布式/版别化装备办理

spring cloud bus作为音讯总线用于改写分布式运用装备

spring boot admin作为一致的运用监控后台

spring cloud Netflix feign 作为rest服务调用client

spring cloud Netflix zuul 作为路由、过滤网关

架构图


运用状况

       spring boot运用现已遍及以它为根底的spring cloud也是作为微服务结构快速在迭代开展,公司中的快递事务以及商家事务,对接事务都接入了相关服务,相对于dubbo,spring cloud运用更为简略便利,http服务更偏运用层,而服务调用能够运用线程池、异步调用、连接池、io多路复用等技能,在高并发性能上也很强壮。



1

Spring Cloud Consul                               

    Consul 是运用Go开发的开源的服务发现和健康检查的东西.Consul还供给K/V存储.能够很便利的运用Consul集群建立高可用的微服务根底架构.  Consul还包括web ui 能够检查各服务状况。

    由于consul内置了服务注册发现功用,所以spring cloud consul代码完成上比较简略,运用ConsulServiceRegistry(完成ServiceRegistry)进行服务注册操作,运用ConsulDiscoveryClient(完成DiscoveryClient)获取一切服务或许up的服务,内部则是运用ConsulClient恳求consul集群进行操作。

    在运用过程中呈现了一个问题,一个服务多个机器注册的时分有时注册的服务会被掩盖,检查源码发现,运用servlet容器初始化事情被监听之后会进行consul运用的主动注册,注册运用ConsulAutoRegistration目标,内部会有一个NewService目标,经过NewService目标的id判别服务的仅有性,而NewService的id默许是ApplicationContext目标的id,也便是运用称号加port加profile,所以同一个运用这个id是相同的所以注册会被掩盖。 找到问题了那么就来解决问题吧,添加装备bean经过掩盖ConsulAutoRegistration目标,设置id为ApplicationContext的id加机器的ip确保运用多台机器的id仅有。

public ConsulAutoRegistration consulRegistratio(ConsulDiscoveryProperties properties,  
           ApplicationContext applicationContext, ServletContext servletContext, HeartbeatProperties heartbeatProperties) {
           properties.setInstanceId(applicationContext.getId()+"-"+ DigestUtils.sha1Hex(properties.getIpAddress()));  

           

}

   

2

Spring Cloud Config                              

    Spring Cloud Config供给服务端和客户端在分布式体系中扩展装备。支撑不同环境的装备(开发、测验、出产)。运用Git做默许装备后端,可支撑装备环境打版别标签。

spring cloud config架构图如下:

Spring cloud config包括4部分

# git config

spring.cloud.config.server.git.uri=http://60.191.68.43:19090/config/{application}-config.git  spring.cloud.config.server.git.username=xxx  
spring.cloud.config.server.git.password=xxx  
spring.cloud.config.server.git.force-pull=true (这个装备能够在装备库房抵触的时分强制拉取,而不会取不到最新的装备)  

    运用如上git库房装备,经过MultipleJGitEnvironmentRepository(承继JGitEnvironmentRepository(完成EnvironmentRepository接口))运用git api获取git库房装备文件资源。

经过得到的装备资源以ResourceController rest方法供给装备资源,如下所示:

  • config client,经过装备的url或许服务发现拉取config server装备 Config server 经过服务发现注册后,config client能够经过服务发现找到config server,经过config server rest服务拉取装备,经过ConfigServicePropertySourceLocator(完成PropertySourceLocator)获取PropertySource参加Environment中供运用运用。

    咱们的config client运用consul服务发现来找到config server来拉取装备,默许ConsulDiscoveryClient获取服务的时分是依据服务id获取一切服务节点,即获取了down的服务,形成拉取装备失利,检查consul服务发现的装备类ConsulDiscoveryProperties发现默许queryPassing=false,经过装备改为true即可回来一切健康检查经过的服务。

  • Spring cloud bus分布式运用装备更新告诉Spring cloud bus支撑rabbitmq和kafka。

    由于公司现已布置kafka,所以运用了kafka作为spring cloud bus的音讯组件。装备如下:

#spring cloud bus kafka

spring.cloud.bus.enabled=true  

spring.cloud.bus.trace.enabled=false  

spring.cloud.stream.kafka.binder.zk-nodes=192.168.11.30:2181,192.168.11.33:2181,192.168.11.35:2181 spring.cloud.stream.kafka.binder.brokers=192.168.11.30:9092,192.168.11.33:9092,192.168.11.35:9092  

架构如下:

这时Spring Cloud Bus做装备更新过程如下:

  • 提交代码,运用 git 的 webhook 触发post恳求给 bus/refresh

  • Server端接收到恳求并发送给Spring Cloud Bus

  • Spring Cloud bus接到音讯并告诉给其它客户端

  • 其它客户端接收到告诉,恳求Server端获取最新装备

  • 悉数客户端均获取到最新的装备

3

Spring Boot Admin                                  

    spring boot admin是spring boot运用的监控办理服务,经过spring boot actuator监控端点监控spring boot运用的各项目标,地址:http://middleware.nidianwo.com/

剖析下要点类

  • AdminServerCoreConfiguration装备类界说了运用注册ApplicationRegistry类注册刊出运用,StatusUpdateApplicationListener用于监控运用的状况改变,运用ThreadPoolTaskScheduler守时监控运用状况。

  • DiscoveryClientConfiguration装备类运用ApplicationDiscoveryListener监听器经过服务发现DiscoveryClient获取的服务列表运用ApplicationRegistry注册运用,经过内部的部的map存储或许运用Hazelcast分布式存储。

  • RevereseZuulProxyConfiguration装备类界说了zuul相关的装备类,ApplicationRouteLocator扩展zuul的RouteLocator对各个运用的spring boot actuator endpoint进行路由恳求

界面如下:

    能够经过界面检查运用的健康状况,内存磁盘运用,java gc状况,装备,日志,thread dump heap dump等各项运用数据。界面如下:

本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/express-industry-information/1833.html
上一篇
下一篇

为您推荐

返回顶部