java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

  以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大概要10分钟以上。

  这个war包包含了我们的所有,jsp、js、css、java代码。代码很臃肿,每次改BUG很容易“碰瓷”。还有很多很多的不方面,这里就不一一列举了。画个图~!

java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

     慢慢的我们的用户越来越多了,一台服务器扛不住了,我们于是乎有横向扩展,有了nginx,貌似可以解决我们的一些问题了。

  

java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

  但是...假如我们现在要一个宝淘商城,内部包含内部订单模块,积分模块,支付模块,用户模块等等,都挤在一个war包,假如订单模块需要电脑的磁盘IO,支付模块需要我们的CPU计算,这样我们的服务器一定是既有一个好的CPU又有一个好的磁盘,也会造成我们的服务器成本很高。

  貌似这样可以解决了问题,但是还不是最优质的,这时来了一个大佬,马丁福勒,就是这个人。

Photo of Martin Fowler

他第一次提出了微服务的思想。我们来简单拆分一下。

java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

   及时用户量大增,我们觉得我们的订单服务有压力了,我们只需要增加我们的订单服务的服务器就可以了。

java架构之路-(微服务专题)初步认识微服务与nacos初步搭建

   我们来明确几个定义,什么是微服务?什么又是微服务架构?

   微服务:微服务核心就是把传统的单机应用,根据业务将单机应用拆分为一个一个的服务,彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程, 每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个一个的小服务就是 微服务。这个是摘自马丁福勒的文章。比如我们的订单服务,可以成为一个微服务,我们的积分服务,也可以成为一个微服务。

   微服务架构:微服务架构是指把 一个一个的微服务组合管理起来,对外提供一套完整的服务。 

对比优缺点:

  我们现在有了微服务架构,难道我们所有的项目都可以调整为微服务架构吗?我们来看看传统架构和微服务架构的优缺点。

  传统架构优点:

  ①.就一个war包,运维超级幸福。

  ②.架构简单明了,没有那些分布式事务,分布式锁等等问题。

  传统架构缺点:

  ①.代码臃肿,每个程序员需要了解所有模块的代码。

  ②.代码质量参差不齐,每次改BUG容易碰瓷。

  ③.不便于做扩展,架构限制性强,扩展成本高。

  ④.部署难,代码行过多,部署半小时很正常。

  ⑤.如果一个非核心模块出现问题,会造成整体系统不可用,比如积分模块内存溢出,倒置整个系统宕机。

  看起来传统架构缺点还是不少的,但是也不是每个项目都适合微服务架构的,比如一个小OA系统,本来功能就不多,你没有必要去拆分服务了,对吧~!我们再来看看微服务给我们带来了什么优缺点吧。

  微服务的优点:

  ①.程序员不需要了解整体业务,只需专心研究自己关注的业务即可。

  ②.改BUG时不用提心吊胆,顶多影响自己的服务不可用,不会导致整体不可用。

  ③.便于后期的扩展,也可以随时应对需求的变化。

  微服务的缺点:

  ①.部署困难,对于运维人员有一些压力(k8s+docker+jenkis )

  ②.服务之间的通讯增加了通讯成本。

  ③.带来了分布式事务,分布式锁,分布式JOB等等问题等待我们来解决。

   微服务的适用场景:合适,大型复杂的项目(来自单体架构200W行代码的恐惧) ,适合快速迭代的项目(来自一天一版的恐惧) ,适合并发高的项目(考虑弹性伸缩扩容的恐惧) ,但我们的微服务不合适那些业务稳定,就是修修bug ,改改数据的系统,迭代周期长,发版频率一二个月一次的稳定系统。

微服务架构是一个架构风格, 提倡

  ①.将一个单一应用程序开发为一组小型服务。

  ②.每个服务运行在自己的进程中。

  ③.服务之间通过轻量级的通信机制(http rest api)

  ④.每个服务都能够独立的部署

  ⑤.每个服务甚至可以拥有自己的数据库 

搭建nacos:

  终于到了我们的代码环节,好讨厌写那些理论的定义。

  eureka很多人都知道,我们的nacos和eureka的功能差不多,就是eureka是springcloud netflix的nacos是springcloud alibaba的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyszyj.html