再谈Micro Services Architecture

再来谈一点我对微服务的理解。首先是微服务的一个服务划分问题。

这张架构图我觉得比价典型了,在设计微服务架构的时候,个人认为应该有以下可以考虑的:

微服务对外必须走Api Gateway的理由是:

再来说说一个我认为不好的设计。首先我们来说说前端和后端,在我看来,对于B/S架构来说,前端单单就是在浏览器运行的这一部分东西,但通常人们也会把微服务中的Front End称之为前端,比如一个NodeJS实现的HTML5客户端,那这里NodeJS的东西也会被认为是前端了。虽然这两个定义究竟是对是错没什么价值所在,但我发现我们的前端开发人员有着一个不好的习惯:

什么意思呢,就是说,把逻辑都写在客户端执行的Javascript中,而不是传统意义上的后端。这样做的实际问题有(我发现的):

这里其实会有争议,那么如果是有这样的业务逻辑,应该写在哪里?假设现有的微服务都是很基础的微服务。

我觉得后两种都是可以考虑的,或者说可以同时存在的。首先从部署来讲,后端和微服务应该是部署在同一个网络内,从后端直接访问微服务时是不需要进行权限验证的;因此业务逻辑应该写在后端中,这样页面访问的接口只会得到一个结果而你不能看到具体的过程,这样在一定程度上是更安全和有效的。其次,如果业务逻辑比较复杂,或者说有需要在其他地方也使用,而现有的微服务没有直接的接口时,需要考虑新建一个处理业务的微服务来处理这些逻辑。即使是这样,仍然最好在服务器端来调用这些微服务。

参考: