什么是微服务
微服务就是不同的模块部署在不同的服务器上面,通过接口去访问就是微服务。
(理解:不同的功能模版在不同的服务器上分布,要使用时就用通过接口去获取)
作用:利用分布式解决网站高并发带来的问题。
什么是RPC?
RPC是一种面向接口的远程调用形式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。比如两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数或者方法,由于不在一个内存空间,不能直接调用,这时候需要通过就可以应用RPC框架的实现来解决。
RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)
RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。
(理解:不同服务器上的功能调用的一个方式)
有哪些RPC:WebService,Dubbo,SpringCloud
什么是集群
多台服务器部署相同应用构成一个集群。
(理解:不同的多个服务器但是有相同的功能模块,防止一个坏掉有备用的)
作用:通过负载均衡设备共同对外提供服务。
Restful:是一种架构设计风格,提供了设计原则和约束条件,而不是架构。而满足这些约束条件和原则的应用程序或设计就是 Restful架构或服务。主要是JSON实现(可以简单的理解restful就是Json)
SOA和微服务的区别
SOA:面向服务(暴露接口),业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力。通过服务的组合和编排来实现上层的业务流程。是一种面向服务的架构理念
微服务:是SOA的升华版本,多模块之间采用RPC远程调用技术。架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行。
SpringCloud:
就是一套完整的微服务治理框架,重点内容如下:
服务注册(生产者),发现(消费者),负载均衡(集群下使用),路由网关(转发地址)
SpringCloud为我们开发人员提供了快速构建分布式的一套工具,包括配置管理,服务发现(Eureka注册中心),服务消费(ribbon和Feign),路由(负载均衡),断路器(出错处理)。一套完整的分布式微服务的治理框架。
1.注册中心(Eureka) 按文档完成。
注册中心的作用就是用来方便接口暴露出来的一个管理工具。
通过我们配置的端口号9000可以访问到我们的Eureka注册中心
2.服务提供者
3.消费者创建
Ribbon实现了服务的负载均衡
Feign同样负载均衡,默认集成了Ribbon。调用简单。
所以一般情况下我们使用Feign作为消费端。
(1)Ribbon 按文档完成。
Ribbon架构图
·一个服务注册中心,eureka server,端口为9000
·EurekaProduce工程跑了两个实例,端口分别为9001,9002分别向服务注册中心注册
·EurekaRibbon端口为9003,向服务注册中心注册
·当EurekaRibbon通过restTemplate调用mjxy-hello的hello接口时,因为用ribbon进行了负载均衡,会轮流的调用mjxy-hello:9001和9002两个端口的hello接口;
(2)Feign 按文档完成。
为什么选用Feign,Feign的service采用借口。
面向借口编程的好处:
1.完全不管实现
2.传入规定格式的数据就可以了
4.断路器
断路器:就是对服务访问不到的情况作出自己的处理。
(1)Ribbon使用断路器 按文档完成。
这样我们就实现了在Ribbon下使用断路器。
我们只需要先正常启动EurekaServer,然后启动生产者,并且启动我们的Ribbon消费者服务,通过http://127.0.0.1:9003/hello?name=Liaoxiang访问我们的服务
浏览器打印:Hello Liaoxiang,From Port:9001
当我们关闭生产者打印:Hello,Liaoxiang,Sorry,Server Error!
(2)Feign使用断路器 按文档完成。
Feign使用的比那个多,因为Feign集成了断路器。
原理是当Feign找不mjxy-hello时,就会 fallback调用HelloServiceImpl下的方法
(@FeignClient(value = "mjxy-hello", fallback = HelloServiceImpl.class))
5.ZUUL路由网关 按文档完成。