hjr-微服务(一):认识JAVA微服务

首先我希望能用三言两语,把微服务解释清楚,因此尽量避免废话,
然后这里说的都是JAVA的

概念

原先一个大web后端系统是一个java进程,包含全部的功能
缺点是

  1. 改一句代码需要全部重新打包部署
  2. 开发人员每个人都从git clone了全部的代码,看着就头疼

因此我们

  1. 把一个大系统拆分成多个java进程

  2. 每个java进程负责一部分业务,比如一个负责用户相关的,一个负责订单相关的,分别两个人负责

  3. 然后放到两个git上,两个开发人员各自维护自己的git即可,分别可以独立部署

然后我们会发现,如果用户服务和订单服务需要数据交互怎么办,因此出现了RPC框架

  1. 开发用户服务的,本身他的服务是给前端用户的API,现在他再写一套的给开发其他服务的后端人员使用的RPC的API
  2. 前端的API和后端的RPC的API的区别是,后端调用的时候不用写那么多代码,直接像引入了一个工具类,然后直接调用方法,的方式就可以访问其他服务的API,而前端需要写ajax请求,写很多代码

然后我们发现虽然服务间数据交互简单了,但是因为每个服务独立部署,因此前端开发访问用户服务和订单服务可能是两个不同的IP和端口,因此

  1. 我们加入一个网关服务,前端对后端所有的请求都直接访问网关服务的ip和端口,然后网关转发到各个微服务里,顺便还可以在这做入口的拦截,日志记录等处理。

然后我们发现,这么多服务那么混乱,有没有一个统一的地方,把所有服务都列出来,然后可以看每个服务的状态和ip端口呢,因此

  1. 注册中心服务出现了,所有服务都在配置文件里写上注册中心的ip和端口,然后全都注册到注册中心服务里去,然后在注册中心web界面里监控全部的服务

以上已经可以足够做到最简单的微服务系统了,因此到此为止。

一句话总结,注册中心管理所有的微服务,网关把前端请求转发到所有的微服务,RPC是一种不同服务间简单方便的通信方式,有这三个就已经足够搭建最基础的微服务环境了

框架

这里我们使用 spring clould 一系列组件,关于各种技术选型我这里只说个人研究后的最佳结果,不说原因,原因已经经过大量分析,这里主要是记录和教程,不做讨论。

然后eureka作为注册中心

feign作为RPC框架

zuul作为网关

实践

以上概念+实现概念的具体的技术框架就可以搭建一个微服务系统了

上一篇:《SpringCloud超级入门,spring基础教程


下一篇:01: Dubbo框架介绍