jhipser微服务架构介绍
内容提要
本文涉及以下内容:
- 微服务架构介绍
- spring cloud介绍
- jhipster架构介绍
微服务架构介绍
微服务概念
微服务和SOA很相似,都是按照业务功能把系统拆分成一个一个的服务。比如电子商务系统拆分成订单服务,商品服务等,每个微服务都是自治的,可以单独部署。
微服务和SOA的区别是:微服务粒度更细,通信协议倾向于使用restfull api 而不使用webservice。
微服务有很多优点,包括松散耦合、自治服务、分散化治理以及易于持续交付等等。
微服务大的缺点是服务的可用性、数据的一致性等
微服务架构和单体应用架构对比:
微服务架构技术关注点
首先看一个概览图:
从上图可以看出,主要分为交付和开发两个方面,微服务化后需要部署众多的独立程序,给运维带来了较大的压力,使用docker可以很好的解决这个问题。
现在主要说下开发方面的技术点
1 服务注册、发现、负载均衡,容错(服务注册中心->兼配置中心)
2 服务间的通信(消息模式,RPC模式)
3 api网关(路由,监控,安全认证,日志,限流)
4 微服务周边设施:日志中心,监控中心 ,文档自动生成
spring cloud介绍
Spring Cloud是Springframework里的一个项目,提供了开发分布式系统中比较常见的一些模式能力。其中配置管理(Config Server)、服务发现(Eureka)、服务熔断(Hystrix)、网关(Zuul)等是基于Netflix OSS的一个封装,利用Java注解(annotation)声明,可以在Spring Boot应用里便捷地使用Netflix的开源产品构建生产级可用的微服务应用
jhipster介绍
jhipster是一个方便的代码生成工具。可以生成整套微服务架构项目基础代码,后端使用spring(spring cloud ,spring boot等),前端使用angularjs。
jhipster 还有两个重要的开源项目,
- jhipster-registry,基于 Spring Cloud Netflix Eureka 和 Spring Cloud Config,实现服务注册、发现,配置管理等
- jhipster-console,基于ELK,实现日志中心和监控中心。
jhipster架构图1:
jhipster架构图2:
jhipster各组件启动顺序
- 启动jhipster-registry --服务和网关依赖注册中心,如果不先启动注册中心,服务和网关启动不了。
- 启动jhipster-console--如果使用这个控制台的话需要优先于具体服务启动
- 启动具体服务--例如订单服务,商品服务。服务启动时会把自己注册到注册中心,方便别的服务或网关调用
- 启动网关--这里的网关指jhipster生成的gateway类型的项目,是一个基于angular的前端
参考文档:
本文涉及的开源项目介绍:
-
Netflix ribbon 可以实现进程内(客户侧)负载均衡,配合netflix eureka 可以实现动态服务列表
-
Netflix eureka Eureka是一个服务注册表,由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。
- Netflix Hystrix 通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包(request collapsing,即自动批处理,译者注),以及监控和配置等功能。
- Netflix zuul Zuul 是提供动态路由,监控,弹性,安全等的网关服务
- spring-cloud-netflix 该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路有(Zuul),客户端负载均衡(Ribbon)等。
- jhipster-registry,基于 Spring Cloud Netflix Eureka 和 Spring Cloud Config,实现服务注册、发现,配置管理等
-
jhipster-console,基于ELK,实现日志中心和监控中心。