微服务架构简单介绍

微服务架构简单介绍

一、为什么需要分布式服务

1.1、早期单体架构带来的问题

单体架构在规模比较小的情况下工作情况良好,但是随着系统规模的扩大,它暴露出来的问题也越来越多,主要有以下几点:

1、复杂性组件变高

比如有的项目有几十万行代码,各个模块之间区别比较模糊,逻辑比较混乱,代码越多复杂性越高,越难解决遇到的问题。

2、技术债务逐渐上升

公司的人员流动是再正常不过的事情,有的员工在离职之前,疏于代码质量的自我管束,导致留下来的很多坑,由于单体项目代码量庞大的惊人,留下的坑很难被发觉,这就给新来的员工带来很大的烦恼,人员流动越大所留下的坑越多,也就是所谓的技术债务越来越多。

3、阻碍技术创新

比如以前的某个项目使用tp3.2写的,由于各个模块之间有着千丝万缕的联系,代码量大,逻辑不够清楚,如果现在想用tp5来重构这个项目将是非常困难的,付出的成本将非常大,所以更多的时候公司不得不硬着头皮继续使用老的单体架构,这就阻碍了技术的创新。

4、无法按需伸缩

比如说电影模块是CPU密集型(也就是非常耗费cpu,但是不怎么耗io)的模块,而订单模块是IO密集型(非常耗费io,但是不怎me耗费cpu)的模块,假如我们要提升订单模块的性能,比如加大内存、增加硬盘,但是由于所有的模块都在一个架构下,我们在扩展订单模块的性能时不得不考虑其他模块的因素,因为我们不能因为扩展某个模块的性能而损害其他模块的性能,从而无法按需进行伸缩。

5、系统高可用性差

因为所有的功能开发最后都部署到同一个框架里,运行在同一个进程之中,一旦某一功能涉及的代码或者资源有问题,那就会影响整个框架中部署的功能。

二、注解机制

一般而言,在编程界中注解是一种和注释平行的概念,在解释注解之前我们需要先定义一下注解与注释的区别:

  • 注释:给程序员看,帮助理解代码,对代码起到解释、说明的作用。
  • 注解:给应用程序看,注解往往充当着对代码的声明和配置的作用,为可执行代码提供机器可用的额外信息,在特定的环境下会影响程序的执行。

框架可以基于这些元信息为代码提供各种额外功能,本质上注解就是理解注解只是配置的另一种展现方式:

  • 比如通过注解的方式实现权限的控制,就比在配置文件当中配置更加地方便。
  • 比如通过利用注解的方式配置路由、配置定时任务、配置服务限流。

三、RPC接口

3.1、什么是RPC?

RPC(Remote Rrocedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

比如说两台服务器A, B,一个应用部署到 A 服务器上,想要调用 B 服务器上应用的提供的函数/方法,由于不在一个内存空间,不能直接调用,就需要通过网络来表达调用的语义和传达调用的数据,而这种方式就是RPC。

RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简结性。为实现该目标,RPC框架需提供一种透明调用机制让使用者不必显示的区分本地调用和远程调用。

RPC 隐藏了通讯的细节,调用远程的服务就像本地的代码一样,其调用协议通讯包含传输协议和编码协议。

  • 传输协议:可以是自定义的TCP 协议,可以是http、websocket。
  • 编码协议:如基于文本编码的xml、json等,也有二进制编码的protobuf、binpack等。

3.2、使用什么协议?

RPC 是一个软件结构概念,是构建分布式应用的理论基础。就好比为啥你家可以用到发电厂发出来的电?

是因为电是可以传输的。至于用铜线还是铁丝还是其他种类的导线,也就是用 http 还是其他协议的问题了。这个要看什么场景,对性能要求怎么样。

3.3、rpc就只是接口调用?

一个完善的 RPC 其实还包含另一块内容,除通信协议外还有“服务注册发现”,错误重试,服务限流,服务调用的负载均衡等等,RPC 不仅仅是一套设计规范,还包含了服务治理。

文章目录
  1. 1. 微服务架构简单介绍
    1. 1.1. 一、为什么需要分布式服务
      1. 1.1.1. 1.1、早期单体架构带来的问题
        1. 1.1.1.1. 1、复杂性组件变高
        2. 1.1.1.2. 2、技术债务逐渐上升
        3. 1.1.1.3. 3、阻碍技术创新
        4. 1.1.1.4. 4、无法按需伸缩
        5. 1.1.1.5. 5、系统高可用性差
    2. 1.2. 二、注解机制
    3. 1.3. 三、RPC接口
      1. 1.3.1. 3.1、什么是RPC?
      2. 1.3.2. 3.2、使用什么协议?
      3. 1.3.3. 3.3、rpc就只是接口调用?
本站总访问量 | 本页面被访问 | 您是第位小伙伴

© XueSi博客 版权所有 备案号 : 赣ICP备19008485号-1