微服务架构4个核心问题: 1. 服务不少,客户端该怎么访问? 2. 这么多服务,服务之间如何通讯? 3. 这么多服务,如何治理? 4. 某个服务挂了怎么办? 解决方案: springCoud:它是一种生态!它是基于springboot构建的 它落地的流行实现有如下三个: 1.Spring Cloud NetFlix 一站式解决方案!(NetFlix停更不停用) api网关:zuul组件 Feign:它是基于HttpClient的,也就是基于Http的通讯方式:同步阻塞的 eureka:服务注册与发现,就是来服务治理的 Hystrix:熔断机制,某个服务挂了采用的机制 。。。。等其余组件 2.Apache Dubbo Zookeeper 半自动,须要整合别人的东西! API网关:没有,须要找第三方组件,或者本身实现 Dubbo: RPC框架,用于服务间通讯(很专业) Zookeeper: 服务注册与发现 熔断机制:没有,能够借助Hystrix组件 能够得出个结论:Dubbo这个方案并不完善 3.Spring Cloud Alibaba 最新的一站式解决方案! 更简单 新概念:服务网格 server Mesh 它的表明落地实现: istio 万变不离其宗: 1.API网关解决服务路由 2.HTTP,RPC解决服务通讯 3.服务注册与发现,实现高可用 4.熔断机制,解决服务挂了的问题,也就是服务降级 本质: 网络不可靠
1.1 什么是微服务?html
1.2 微服务之间是如何独立通信的?ios
1.3 SpringCloud 和 Dubbo有那些区别?git
1.4 SpringBoot 和 SpringCloud,请谈谈你对他们的理解github
1.5 什么是服务熔断?什么是服务降级?面试
1.6 微服务的优缺点分别是什么?说下你在项目开发中遇到的坑spring
1.7 你所知道的微服务技术栈有哪些?列举一二数据库
1.8 Eureka和Zookeeper均可以提供服务注册与发现的功能,请说说二者的区别api
…springboot
微服务(Microservice Architecture) 是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。服务器
究竟什么是微服务呢?咱们在此引用ThoughtWorks 公司的首席科学家 Martin Fowler 于2014年提出的一段话:
原文:https://martinfowler.com/articles/microservices.html
汉化:http://www.javashuo.com/article/p-kujxclul-w.html
再来从技术维度角度理解下:
强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭义的看,能够看做是IDEA中的一个个微服务工程,或者Moudel。IDEA 工具里面使用Maven开发的一个个独立的小Moudel,它具体是使用SpringBoot开发的一个小模块,专业的事情交给专业的模块来作,一个模块就作着一件事情。强调的是一个个的个体,每一个个体完成一个具体的任务或者功能。
一种新的架构形式,Martin Fowler 于2014年提出。
微服务架构是一种架构模式,它体长将单一应用程序划分红一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每一个服务运行在其独立的进程中,服务与服务之间采用轻量级的通讯机制(如HTTP)互相协做,每一个服务都围绕着具体的业务进行构建,而且可以被独立的部署到生产环境中,另外,应尽可能避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具(如Maven)对其进行构建。
微服务技术条目 | 落地技术 |
---|---|
服务开发 | SpringBoot、Spring、SpringMVC等 |
服务配置与管理 | Netfix公司的Archaius、阿里的Diamond等 |
服务注册与发现 | Eureka、Consul、Zookeeper等 |
服务调用 | Rest、PRC、gRPC |
服务熔断器 | Hystrix、Envoy等 |
负载均衡 | Ribbon、Nginx等 |
服务接口调用(客户端调用服务的简化工具) | Fegin等 |
消息队列 | Kafka、RabbitMQ、ActiveMQ等 |
服务配置中心管理 | SpringCloudConfig、Chef等 |
服务路由(API网关) | Zuul等 |
服务监控 | Zabbix、Nagios、Metrics、Specatator等 |
全链路追踪 | Zipkin、Brave、Dapper等 |
数据流操做开发包 | SpringCloud Stream(封装与Redis,Rabbit,Kafka等发送接收消息) |
时间消息总栈 | SpringCloud Bus |
服务部署 | Docker、OpenStack、Kubernetes等 |
选型依据
当前各大IT公司用的微服务架构有那些?
阿里:dubbo+HFS
京东:JFS
新浪:Motan
当当网:DubboX
…
各微服务框架对比
| 功能点/服务框架 | Netflix/SpringCloud | Motan | gRPC | Thri t | Dubbo/DubboX |
| —————— | ———————————————————————————— | —————————————————- | ————————— | ———— | —————————— |
| 功能定位 | 完整的微服务框架 | RPC框架,但整合了ZK或Consul,实现集群环境的基本服务注册发现 | RPC框架 | RPC框架 | 服务框架 |
| 支持Rest | 是,Ribbon支持多种可拔插的序列号选择 | 否 | 否 | 否 | 否 |
| 支持RPC | 否 | 是(Hession2) | 是 | 是 | 是 |
| 支持多语言 | 是(Rest形式) | 否 | 是 | 是 | 否 |
| 负载均衡 | 是(服务端zuul+客户端Ribbon),zuul-服务,动态路由,云端负载均衡Eureka(针对中间层服务器) | 是(客户端) | 否 | 否 | 是(客户端) |
| 配置服务 | Netfix Archaius,Spring Cloud Config Server 集中配置 | 是(Zookeeper提供) | 否 | 否 | 否 |
| 服务调用链监控 | 是(zuul),zuul提供边缘服务,API网关 | 否 | 否 | 否 | 否 |
| 高可用/容错 | 是(服务端Hystrix+客户端Ribbon) | 是(客户端) | 否 | 否 | 是(客户端) |
| 典型应用案例 | Netflix | Sina | Google | Facebook | |
| 社区活跃程度 | 高 | 通常 | 高 | 通常 | 2017年后从新开始维护,以前中断了5年 |
| 学习难度 | 中等 | 低 | 高 | 高 | 低 |
| 文档丰富程度 | 高 | 通常 | 通常 | 通常 | 高 |
| 其余 | Spring Cloud Bus为咱们的应用程序带来了更多管理端点 | 支持降级 | Netflix内部在开发集成gRPC | IDL定义 | 实践的公司比较多 |
Spring官网:https://spring.io/
目前成熟的互联网架构,应用服务化拆分 + 消息中间件
能够看一下社区活跃度:
https://github.com/spring-cloud
对比结果:
Dubbo | SpringCloud | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netfilx Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
断路器 | 不完善 | Spring Cloud Netfilx Hystrix |
服务网关 | 无 | Spring Cloud Netfilx Zuul |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总栈 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
最大区别:Spring Cloud 抛弃了Dubbo的RPC通讯,采用的是基于HTTP的REST方式
严格来讲,这两种方式各有优劣。虽然从必定程度上来讲,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。并且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这个优势在当下强调快速演化的微服务环境下,显得更加合适。
品牌机和组装机的区别
社区支持与更新力度的区别
总结:两者解决的问题域不同:Dubbo的定位是一款RPC框架,而SpringCloud的目标是微服务架构下的一站式解决方案。
官网:http://projects.spring.io/spring-cloud/
版本号有点特别:
SpringCloud有些并无采用数字编号的方式命名版本号,而是采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,好比最先的Realse版本:Angel,第二个Realse版本:Brixton,而后是Camden、Dalston、Edgware,目前最新的是2020.0.3 CURRENT GA通用稳定版。
自学参考书: