一、面试题
1. springCloud 和 dubbo 有什么区别?
2. 两个负载均衡,如何选择?(Ribbon和Feign)
3. 什么是服务雪崩,服务扇出,服务降级?
二、微服务概述
1. 什么是微服务?
1.)马丁. 福勒(微服务的提出者)这么说:https://martinfowler.com/articles/microservices.html
微服务架构风格[1]是一种将单个应用程序拆分为一组小型服务的方法(通常按照业务拆),每个小型服务都在自己的进程中运行,并与轻量级机制(通常是HTTP RESTful API)进行通信。这些服务围绕业务功能构建,可通过全自动部署机制独立部署。这些服务至少集中管理,可以用不同的编程语言编写,并使用不同的数据存储技术。
2. 微服务和微服务架构?
1.)微服务:
具体解决某个问题/任务/功能,可以狭隘的看作开发工具里的一个 module。
2.)微服务架构:
微服务架构是一种架构模式。它将单一程序划分成小的服务,服务之间相互协调、相互配合。每个服务运行在其独立的进程中,服务和服务质检采用轻量级的通信机制相互协作(通常基于HTTP协议的RestFul API)。另外,尽量避免统一的、集中式的服务管理机制。
3.微服务的优缺点?
1.)优点:
(1)高内聚,代码容易聚焦一个指定的业务功能;(2)开发简单、开发效率高;(3)松耦合;(4)代码阶段和部署阶段都是独立的;跨语言;(5)允许灵活的自动部署,持续集成。(6)前后端分离开发。(7)每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。
2.)缺点:
(1)运维人员难度加大。(2)开发人员需要处理分布式系统的复杂性。(3)系统部署的依赖性。(4)通信超时。(5)数据的一致性。
4.微服务技术栈有哪些?
微服务条目 | 落地技术 |
---|---|
服务开发 | SpringBoot、Spring、SpringMVC |
服务配置和管理 | Netfilex 的 Archaius、阿里的 Diamond |
服务注册与发现 | Eureka、Consul、Zookeeper 等 |
服务调用 | Rest、RPC、gPRC(谷歌) |
服务熔断器 | Hystrix、Envoy 等 |
负载均衡 | Ribbon、Nigix 等 |
服务接口调用(客户端调用服务简化工具) | Feign 等 |
消息队列 | KafKa、ActiveMQ、ActiveMQ 等 |
服务配置中心管理 | SpringCloudConfig、Chef等 |
服务路由(API网关) | Zuul等 |
服务监控 | Zabbix、Nagios、Metrics、Spectator等 |
全链路追踪 | Zipkin,Brave、Dapper等 |
服务部署 | Docker、OpenStack、Kubernetes等 |
数据流操作开发包 | SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息) |
事件消息总线 | Spring Cloud Bus |
… | … |
5.为什么选择SpringCloud?
1.)选型依据。
调试a.整体解决方案和框架成熟度。
调试b.社区热度.
调试c.可维护性。
调试d.学习曲线。
2.)当前用的微服务架构有哪些。
调试a.阿里Dubbo/HSF。
调试空Gdubbo:2012年解散,17年重新启用,这五年内springCloud站起来了
调试空GHSF:HignSpeed FrameWork 江湖人称:好舒服
调试d.京东的JSF。
调试c.新浪微博的Motan。(江湖人称:茅台)
调试d.当当网的DubboX。(当当网被海航集团收购)
三、SpringCloud入门概述。
1.SpringCloud是什么?
给开发者的一套简单易懂,易部署和易维护的分布式系统开发工具包。微服务思想落地的解决方案的集合体(一套带走)。
springCloud的版本号,用的英国伦敦的地铁站的名字。
2.Dubbo和SpringCloud的对比。
1.活跃度对比。
dubbo 活跃度传送门
springCloud 活跃度传送门
2.技术栈对比。
Dubbo | SpringCloud | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | Rest API |
服务监控 | Dubbo-monitor | SpringBoot Admin |
断路器 | 无 | Spring Cloud Hystrix |
服务网关 | 无 | Spring Cloud zuul |
分布式配置 | 无 | Spring Cloud config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
3.SpringCloud参考资料。
调试a.官网:http://projects.spring.io/spring-cloud/
调试b.中文版模块文档:https://springcloud.cc/spring-cloud-netfix.html
调试c.开发API说明:http://cloud.spring.io/spring-cloud-static/Dalston.SR1/
调试空格KGL中文版:https://springcloud.cc/spring-cloud-dalston.html
调试d.springCloud的中文社区:http://springcloud.cn/
调试TSKGLspringCloud中文网:https://springcloud.cc/
四、版本对比。
SpringBoot | springCloud |
---|---|
springboot 1.2.x | Angel |
springboot 1.3.x | Brixton |
springboot 1.4.x | Camden |
springboot 1.5.x | Dalston 和 Edgware |
springboot 2.0.x | Finchley |
springboot 2.1.x | Greenwich |