观看 网易云课堂,魔乐科技的,springcloud快速入门 所记录
Springcloud 架构设计 学习笔记
对于分布式的开发设计
最初
思考
- 分布式的开发如何可以让代码更加安全?
- 分布式开发的时候如何进行有效的通讯?
- 在进行分布式 处理的时候到底如何进行程序的功能划分?
- WEB集群:考虑到多用户并发访问的处理速度;
- 业务中心:在进行一些庞大的项目设计过程之中,应该有更加完善的业务处理,这样所有的客户端(服务器)直接调用这些业务中心的操作就可以完成基体的功能;
- 数据库集群:解决了数据的存储问题,一级数据的分片管理
解决办法
分布式的项目开发按照历史经历过如下的一些技术
- CORBA
公共对象请求代理框架,它是一种开发标准。 - RMI(远程方法调用)
该技术是SUN提出的,该技术第一次提出远程接口。
RMI实现方案:
- EJB
RMI-IIOP 协议,可以看作是RMI和CORBA的结合。基于此出现了EJB。
EJB 只留下了理论。 - Webservice (web服务)
webservie = XML(WSDL) + SOAP
第一代 Apache Axis
开源组织:XFire
Apahe 收购了 XFire称为了XSR
- 速度太慢了,处理的速度不行
- 如果要想采用远程接口的方式调用,则要利用开发工具生成一堆的文档。
- SOA (面向服务架构)
它提出了一个企业服务总线(ESB)的概念。
SOA 提出的服务总线,衍生新一代技术。具有代表性国内的阿里的 Dubbo开发技术。成长最快的是Rest,因为Json的广泛应用。
微服务之痛
Springcloud 整体核心架构只有一点:Rest服务,也就是说整个Springcloud的配置过程中,所有的配置处理都是围绕Rest完成的。一定要有两个端:服务的提供者(Provider)、服务的消费者(Consumer),所以对于整个Springcloud 的基础结构如下:
业务层才能微化为微服务。
这么多的微服务,如何客户需要使用,就需要知道所有的端口。
所以引入了注册中心,保存所有微服务的相关信息。
但一旦注册中心一旦挂了,就容易出现问题,所以该注册中心要支持HA机制。
- 对于整个WEB 架构(springboot实现),利用Nginx 或 Apache 实现负载均衡处理。
- 业务端也需要负载均衡 Eureka
- 客户端调用的时候都需要一个调用地址,即使现在使用了Eureka作为注册中心,那么它也需要一个调用地址,可是如果所有的操作都要利用调用地址的方式来处理,太麻烦!
- 程序最方便的调用方式是接口,希望可以将所有的Rest服务的内容以接口的方式出现调用。所以提供了一个feign的组件。
- 进行微服务架构设计牵扯到的问题还是属于RPC ,所以就必须考虑熔断。
- 代理机制 zuul
- 统一管理配置文件 springconfig