JAVA-DIY-15-WEEK

Do you like technology?

Posted by Hyuga on August 5, 2019

第15次讨论主题:微服务

话题

微服务的价值是什么?

服务单一,开发效率高,耦合性低,敏捷高效开发等等。

个人虽然待的公司不大,但也是从单体服务一路做到现在的微服务架构。

单体服务就不提了,和原先接触的分布式架构不同的是,之前的分布式系统是把大的服务拆分开多个系统,当时采用的是dubbo方式调用。

相对于单体服务而言,已经集群且分布式的服务无疑是更健壮和更易于扩展维护的,不同团队的开发者只需要开发各自的服务即可,只要双方约定好调用接口,即便采用不同技术栈和开发语言都没问题。

而微服务则在我之前接触的分布式系统上又多了一层细化的概念。

微!将之前较为庞大的分布式系统打散,进一步按模块化来细分服务,每个服务只做单一的服务提供,通过apilist服务于其他服务,多个服务又为多个门面服务所调用,如此架构,无论门面层还是服务层,皆为一个个单一的服务。从架构上看,服务的使命更为清晰,各司其职。各个模块服务集群也更为便捷。

但是服务也不是拆分得越小越好,还是得看具体的场景划分。

你接触过的最佳微服务实践是什么?

目前也只做过一个微服务项目,谈不上最佳,但也是个人目前对比其他一些项目觉得算是挺不错的一个服务实践了。

架构方面采用:eureka + config + springBoot + dubbo + activeMQ + jenkins

服务主要按两块切分:门面层 + 服务层

  • 服务层:erpgardenorderoms等等,各服务功能独立
  • 门面层:mgrerp等等

eureka实现服务注册,config实现配置中心化。

服务层之间通过feign调用,与旧系统通过dubbo通信。所有服务层服务于门面层。

一个完整请求为:http -> controller -> remote -> feign -> api -> service -> dao

其中remote中所有查询采用Hystrix实现服务降级、熔断,所有请求仅为get和post,post请求统一使用@RequestBody

最近着手把SpringBoot Admin整进去,便于监控线上系统情况,再配合阿里的arthas,想想有点小激动。