作家
登录

Spring Cloud微服务实践

作者: 来源: 2017-09-05 15:03:55 阅读 我要评论

背景

跟着微办事的风行,基于Spring生态的Spring Cloud越来越被存眷, Spring Cloud专注于供给优胜的开箱即竽暌姑的典范用例和可扩大性覆盖机制。

特点

  • 分布式/版本化设备
  • 办事注册和发明
  • 路由
  • service - to - service调用
  • 负载均衡
  • 断路器

Spring cloud包含两个根本模块,spring cloud context和spring cloud commons。

Spring Cloud微办事实践

  1. @FeignClient(name = "heimdall", url="${express.open.url}"
  2.         configuration = RemoteConfiguration.class) 
  3. public interface RemoteExpressService { 
  4.  
  5.     //@Headers({"Content-Type: application/x-www-form-urlencoded","Accept: application/x-www-form-urlencoded"}) 
  6.     @RequestMapping(method = RequestMethod.POST, value = "/express/api/v1/addModifySite"
  7.     @ResponseBody 
  8.     ApiResponse addModifySite(SiteDTO siteDTO); 

spring cloud context即spring cloud应用高低文,包含引导高低文(加载bootstrap设备)、设备加密、设备刷新范围(RefreshScope)、控制端点(/env/reset,/refresh,/restart等)功能。

Spring cloud commons 供给办事注册发明,负载均衡,断路器等模式的一个共用抽象层,为具表实际供给同一抽象。

Consul 是应用Go开辟的开源的办事发明和健康检查的对象.Consul还供给K/V存储.可以很便利的应用Consul集群搭建高可用的微办事基本架构. Consul还包含web ui 可以查看各办事状况.

线上consul地址: http://consul.nidianwo.com/

如下截图:

因为consul内置了办事注册发明功能,所以spring cloud consul代码实现上比较简单,应用ConsulServiceRegistry进行办事注册操作,应用ConsulDiscoveryClient获取所有办事或者up的办事,内部则是应用ConsulClient请求consul集群进行操作。

在应用过程中出现了一个问题,一个办事多个机械注册的时刻有时注册的办事会被覆盖,查看源码发明,应用servlet容器初始化事宜被监听之后会进行consul应用的主动注册,注册应用ConsulAutoRegistration对象,内部会有一个NewService对象,经由过程NewService对象的id断定办事的独一性,而NewService的id默认是ApplicationContext对象的id,也就是应用名称加port加profile,所以同一个应用这个id是雷同的所以注册会被覆盖。 找到问题了那么就来解决问题吧,增长设备bean经由过程覆盖ConsulAutoRegistration对象,设置id为ApplicationContext的id加机械的ip包管应用多台机械的id独一。

  1. @Bean 
  2. @Primary 
  3. public ConsulAutoRegistration consulRegistration(ConsulDiscoveryProperties properties, ApplicationContext applicationContext, ServletContext servletContext, HeartbeatProperties heartbeatProperties) {   
  4.     properties.setInstanceId(applicationContext.getId()+"-"+ DigestUtils.sha1Hex(properties.getIpAddress())); 
  5.     return ConsulAutoRegistration.registration(properties, applicationContext, servletContext, heartbeatProperties); 

ConsulDiscoveryProperties这个类是consul办事发明的设备类,个一一些设备须要留意,比如preferIpAddress默认为false,即默认是经由过程host来进行办事的地址进行注册和检查,然则当情况不支撑host拜访时就会出问题,比如我们线上的阿里云情况,也有机械不支撑host拜访,所以须要设备preferIpAddress=true。

spring cloud config

Spring Cloud Config供给办事端和客户端在分布式体系中扩大设备。支撑不合情况的设备(开辟、测试、临盆)。应用Git做默认设备后端,可支撑设备情况打版本标签。


  推荐阅读

  在系统安全方面,Android 8.0 做出了一些重要改变

近日,Google正式宣布了Android 8.0(奥利奥)。除了可见的界面和功能更新,Android 8.0在体系安然方面也做出了一些重要改变。不过,对于Android团队的安然人员来说,这只是漫长路程中的一>>>详细阅读


本文标题:Spring Cloud微服务实践

地址:http://www.17bianji.com/lsqh/37151.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)