1.jhipster微服务框架介绍
内容提要
本文涉及以下内容:
- 微服务架构介绍
- 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,实现日志中心和监控中心。
2.使用jhipster构建微服务demo
jhipster简单来说是一个基于nodejs+yeoman的java代码生成器。往大了说是基于java的一套微服务解决方案。请注意是一整套的微服务解决方案。jhipster在整个程序架构上都做好了整合,包括前端mvvm框架(angularjs),前端构建工具(gulp)到后端的微服务框架(spring cloud)和hibernate/mongodb,再到单元测试/ui测试。
毫不客气的说 :学会了这套框架,你就是程序开发/程序架构界的潮男。对,hipster的意思就是:追求新奇的人。
demo
下面跟着我来一步一步的来见证奇迹。
1.安装nodejs。
2.安装yeoman/bower/gulp npm install -g yo bower gulp-cli
3.安装jhipster npm install -g generator-jhipster
是不是被gfw艹翻了?哈哈哈
生成mciroservice app
生成基础架构
cd到你想存放代码的路径,然后运行:yo jhipster
这时候jhipster向导就会启动了,如图:

第一个选择很重要,项目类型要选择microservice application

后面的根据实际情况,选择就可以。失败了也没关系,删掉文件夹重新来过。
------生成成功后运行 ./mvnw 或者gradlew下载依赖包。
jhipster是可以生成实体和实体的增删改查带分页的
运行yo jhipster:entity <entityName>来启动实体生成向导。
然后跟着向导输入信息。
生成microservie
生成基础架构
继续运行:yo jhipster
第一个选择很重要,项目类型要选择*microservice gateway
这个时候如果还被gfw折磨,你应该考虑ss或者vpn了。
生成实体
运行yo jhipster:entity <entityName>来启动实体生成向导。
然后跟着向导输入信息。
此处需要注意:
1.询问是否选择存在的app时 选择是
2.<entityName>需要时在app中生成过的
运行 jhipster registry
jhipster registry是一个基于spring cloud的配置中心,jhipster的微服务架构依赖此程序。
1 从github下载源码https://github.com/jhipster/jhipster-registry
2 cd 到解压目录 然后运行 ./mvnw或者gradlew 启动应用
运行效果如下

这个时候就可以启动app和gateway了。
cd到刚才存放microservice app的目录 运行./
cd到刚才存放microservice gateway的目录 运行./mvnw
然后打开浏览器见证奇迹




本文介绍了微服务架构的概念,对比了微服务与SOA的区别,并详细讲解了Spring Cloud和jhipster工具。jhipster是一个代码生成工具,可用于创建基于Spring Cloud的微服务架构,包括服务注册、发现和配置管理。通过jhipster可以方便地生成微服务基础代码,并提供了微服务的启动顺序。

401

被折叠的 条评论
为什么被折叠?



