参考资料:
https://www.cnblogs.com/xishuai/archive/2018/04/13/dubbo-and-spring-cloud.html
五大神兽
服务发现——Netflix Eureka 帮我们服务的通信地址的
客服端负载均衡——Netflix Ribbon\Feign 解决网络通信的
断路器——Netflix Hystrix 解决微服务故障的
服务网关——Netflix Zuul 微服务的大门(安保部门)
分布式配置——Spring Cloud Config 统一管理微服务的配置
什么是微服务?
1、什么是单体应用?
项目的所有资源()都在一个应用中,打包成一个war包,使用一个tomcat去运行,运行在一个进程中
2、单体应用的问题
一个模块挂了,整个项目都受影响
单个tomcat更够处理的并发有限,可以做集群,但是不方便局部(某一个模块)扩展
维护/开发/升级比较麻烦
代码臃肿,编译、打包比较慢
技术选型单一,比如用java开发就不能用其他语言开发
数据库选项单一
画图工具:www.draw.io
3、什么是微服务架构?
微服务就是把一个大的系统,拆分成多个小的服务,每个微服务只专注一个业务,每个服务都有微服务各自的进程,微服务之间使用网络通信协议进行数据交互
4、微服务的特点
数据选型多样化
技术选型多样化
每个微服务专注一个业务
每个维护有自己的进程
微服务之间通过网络协议进行通信
方便做局部拓展
开发/维护/升级更方便
5、微服务缺点
成本高
技术要求高
部署麻烦
6、微服务远程调用
dubbo,RPC框架—远程过程调用,基于TCP
springCloud基于http,不仅仅解决远程调用,
百度以下-----dubbo与springcloud的区别?
https://github.com/apache/incubator-dubbo
Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案
https://github.com/spring-cloud
Spring Cloud 基于 Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等
7、如何选择
如何
Eureka 注册中心集群 原理图
集群和负载均衡器
相当于请求分发,将请求分发到不同的服务器上
负载均衡算法
1、轮询算法
2、随机算法
3、权重算法
4、响应权重
5、ip hash 算法
。。。。。