转载

微服务入门篇: 发展和入门介绍

大家也知道大型网站为了应付海量的用户的高并发、大流量、高可用和海量数据等所引起的各种问题,从而网站慢慢演变成了现在的微服务。给大家介绍一下他的演变过程:

传统的单体架构------>面向服务(SOA)架构------>微服务架构

一、传统单体架构

其实大型网站也是由小型网站演变而来的,一开始并没有多少人访问,只需要一台服务器就足够了。而对于网站架构也是一样的,本人花了一个传统的架构的简单的草图:

微服务入门篇: 发展和入门介绍

      我介绍一下这三层(这个刚入门初级的可以看下):

控制层:  其实就是我们后台java处理业务代码(MVC)。

视图:用户所操作的页面。

数据库:用户操作页面或数据进行存储的地方。

      传统单体架构的流程

比如一个用户在某商城购买充电宝。

第一步:他先找到这个商城充电宝的页面,这也就是我们上面的视图(view)层

第二步:他点击进行购买的时候,这时候会进入到后台进行购买的业务进行处理。(这                            也是上面提到的控制层,也是业务处理层)

第三步:走到第二步的时候,处理业务的时候,会把此用户购买了一个充电宝的记录                             存入 数据库。存入成功后,会把数据返回给视图层进行展示,显示他已经购                             买成功,这时候会有相关提示给淘宝后台进行处理此条订单给此用户发送充电                           宝。

       传统单体架构的优缺点:

                 优点:用户量较少时,单一代码块、容易部署、开发模式简单、技术栈单一

缺点:用户太多和业务复杂的时候,会出现庞大的业务,这时候就会有庞大的代码                              库,错综复杂。从而出现大量的问题,会导致交付周期长,维护成本也会大                             量的增加。并且在引入新技术的时候会出现各种问题。

二、面向服务(SOA)架构

在越来越多用户量访问的网站的时候,会导致网站的性能会越来越差。一台服务器很容易就宕机,崩溃。这时候就需要更强大的CPU、快速磁盘检索、数据缓存等。从而把应用和数据进行隔离,也就把上面的三个分成三个服务器,一样草图见证:

微服务入门篇: 发展和入门介绍

 SOA简介:

在传统单体架构中,也就是我们常用的SSM、SSH等,把相关的配置和运行都                      放在一个JVM钟运行,无法满足海量用户发起的高并发请求。还有比如某个接口因                    为需求而要发生改变或者增加引进新技术的时候整合发生各种问题,这就表示单一                   进程已经无法满足我们的需求了,扩展能力也有限。这时候就有了SOA,把接口进                   行接口进行服务化单独隔离,需要哪一个接口就通过网络协议调用哪一个接口。

目的: 把相关的配置、接口、数据等放在不同的服务器,然后通过网络                                              通讯协议调用,解决海量用户所引发的高并发、大流量、海量数                                              据所引发的问题。

             SOA特点

1、定义良好的服务接口,通过网络协议对外提供服务,服务间变现为松耦性。

2、在我们写代码时,有一个服务接口因为需求而要改变接口时,我们只需要改                              变这个接口即可,不会影响其他的接口对外提供服务。

3、SOA通信格式在之前是使用XML,但是因为XML在高并发、大规模的情况会                           导致冗余,所以后来被JSON所代替

4、SOA定义对外接口时,可以同时调用此接口,增加了服务的重用性。

三、微服务架构

 简介: 上面也介绍了一下SOA服务,其实微服务就是在SOA的基础上更粒度化。比如         淘宝商城,SOA就是把接口进行服务化,把相关的程序放在一个JVM里面运行,而对于微         服务就是把这个后台代码再次进行拆分,比如拆分成支付宝服务、积分服务、订单服务等         等。就相当于拆分几几个JVM运行。这样可以大大的解决高并发的问题。

下面介绍一下优缺点:

优点: 1、易于扩展

2、可以用不同的语言开发

3、易于扩展,有利于新技术的融合

4、微服务是业务逻辑代码,不会与前端相混合

5、每个服务都是单独部署在单独的服务器

   缺点:

1、服务比较多的时候,管理起来比较麻烦,并且运维人员压力也在增加

2、系统集成测试比较困难

3、保证数据的一致性

4、服务之间的通讯成本也在增加

5、服务之间的监控技术也变得复杂

其实微服务也就是为了解决海量人群访问然后遇到的各种问题,比如高并发、分布式事务、数据一致性等等问题。解决方法也有很多种,我写的比较简单,如果有想深入学习或者真的想学习微服务的朋友,可以群 652288416 ,直接联系我群主就好,不管是工作的问题还是你想知道技术,免费给大家解答。

原文  https://juejin.im/post/5de218fbf265da05ac195636
正文到此结束
Loading...