「系统架构」微服务探究之初识微服务
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 在传统的开发中,我们通常是将所有的功能打包在一起,然后统一部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑。如下图所示: 这种开发方式虽然操作简单,代码重用率高,没有分布式的管理和调用消耗,但是由于代码功功能耦合在一起,通常是牵一发动全身,一个微小的问题,都可能导致整个应用挂掉。这对于大型应用来说,是很不可行的。因此,有人提出能不能将每一个小的服务独立开来,分别部署维护呢?如产品服务独立成一块,订单服务独立成一块,用户服务也独立成一块。这样,每一个服务之间都不会有高耦合性,后期维护升级也更加方便。 是的,将每一个服务独立部署分开维护,的确可以解决传统开发中的高耦合性,但是我们也要考虑在传统的开发方式中所有的服务都是本地的,UI可以直接调用,现在按功能拆分成独立的服务,跑在独立的服务器或进程中,客户端UI如何互相访问呢? 后台有N个服务,前台就需要记住管理N个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不服务我们 拆分的理念,特别当前台是移动应用的时候,通常业务变化的节奏更快。 另外,N个小服务的调用也是一个不小的网络开销。还有一般微服务在系统内部,通常是无状态的,用户登录信息和权限管理最好有一个统一的地方维护管理