本文分别从整体层级、开发视图、部署视图三个角度,对整个系统的微服务架构进行“解剖”。整体层级关注调用的层级(从终端人机界面到物联网);开发视图则主要面向开发人员,描述了系统工程结构、模块及关联关系;部署视图则是系统最终部署时的拓扑图;通过这些视角可以较为清晰的明白整个微服务架构设计思路。
自顶向下的一张调用层次关系图:
详细的说明,见下方的开发视图和部署视图。
下图仅对微服务部分进行描述,前端架构不是本文重点部分,在下一节的部署图中会作说明:
微服务开发视图展示了java开发环境中有哪些具体的工程、工程之间的依赖关系,关键点说明如下:
部署图更为直观地展示了服务之间的调用关系、各服务部署情况。如下图:
上图中调用关系看起来较复杂,按以下思路看图:
A.加入一层微服务客户端,主要为了更好的处理访问时的负载均衡、容断、restful服务;
B.直接调用网关,网关再调用具体的微服务,见上图中虚线部分;
不管采用哪种方式,本案例中采用的是前后分离的开发模式,在ngnix中放置前端开发的代码(如vue.js+elementUI或bootstrap、layui等)直接配置到ngnix中或者用node.js启动后,在ngnix的配置文件中进行代理。
最后看一下手机端,不管采用原生的开发还是html5+css3方式开发,其调用接口将保持不变,建议一般要求不高的场景下采用html5开发,这样基本上前端人员即可完成移动端开发工作,原生开发则需要分别招聘andriod/ios开发人员。
个人认为,其实大部分情况下中小型系统不适合采用微服务架构,一个系统跑下来,即使是一个小网站,也要启动很多服务进程,虽然解决了性能、HA单点问题,方便日后分模块进行升级,但对人员的要求相对要高很多,开发工作量要比单体应用高出很多,如果没有专业的团队,很可能实际的性能、可靠性反而降低了。另外开发微服务在开发过程中也需解决很多低效的开发问题,如应采用代码生成器和形成很多团队开的规范的约定。
喜欢这篇文章的话记得给我点个关注哦,每天都会分享Java有关的文章
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。