SpringCloud-引言-01
1. 常见的springcloud面试题
- 什么是微服务?
- 微服务之间如何独立通讯?
- SpringCloud和Dubbo之间有什么区别?
- SpringBoot和SpringCloud,谈谈理解?
- 什么是服务熔断?什么是服务降级?
- 微服务的优缺点是什么?开发中遇到什么坑
- 微服务的技术栈有什么,列举一二?
- Eureka和Zookeeper都可以提供服务注册和发现的功能,请说明两者的区别?
2. SpringCloud五大组件(对应解决四个问题)
对应的四个问题
- 这么多服务,客户端该如何去访?
- 这么多服务,服务之间如何进行通信?
- 这么多服务,如何治理呢?
- 服务器挂了怎么办?
五大组件
- 服务注册与发现------------Netflix Eureka
- 负载均衡:
- 客户端负载均衡--------Netflix
- 服务器负载均衡--------Feign(也依赖与Ribbon,将调用的方式RestTemplete改为Service接口)
- 断路器--------------------Netflix Hystrix
- 服务网关------------------Netflix zuul
- 分布式配置----------------Spring Cloud Config
3. 微服务概述
什么是微服务
微服务,是一种架构思想
- 就目前而言,对于微服务,业界没有一个统一的,标准的定义
- 通常而言,它是一种架构模式,或者是一种架构风格,提倡将单一的应用程序分成一组小的服务,每个服务在其独立的自己的进程内部,服务之间相互协调,相互配置,为用户提供价值,服务之间采用轻量级(http)互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中.
- 从技术的角度理解的话,就是将传统的一站式的应用,根据业务拆分成一个个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务干一个事情,从技术的角度看的话就是一种小而独立的处理过程,类似进程的概念,能够自行启动或者销毁,拥有自己独立的数据库
微服务的缺点与优点
优点
- 单一职责
- 每个服务足够内聚,并且小,代码容易理解,能聚集一个指定的业务或者业务需求
- 开发简单,开发效率高,一个服务就是只干一件事
- 能被小团队单独开发,只需2-5人即可
- 可以使用不同的语言开发
- 易于第三方集成,允许自动部署,通过持续的集成工具,jenkins.Hudson.bamboo
- 允许利用或融合最新的技术
- 微服务只是业务逻辑的代码,不会和HTML CSS或者其他的界面混合
- 每个微服务都有自己存储的能力,可以有自己的数据库
缺点 - 开发人员需要处理分布式系统的复杂性
- 运维压力增大(随着服务的增加)
- 系统部署的依赖问题
- 服务建通信成本问题
- 数据的一致问题,网络有延迟
- 数据集成测试问题
- 性能和监控的问题
微服务的技术栈有哪些
微服务技术条目
服务开发--------------------------------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等
4. SpringCloud的入门概述
- 什么是springcloud
- Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案
- Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成
- Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式
- Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接
- SpringCloud 和 SpringBoot的关系
- SpringBoot专注于开发方便的开发单个个体微服务;
- SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、为代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务;
- SpringBoot可以离开SpringCloud独立使用,开发项目,但SpringCloud离不开SpringBoot,属于依赖关系;
- SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架;
- 参考
- SpringCloud Netflix 中文文档:https://springcloud.cc/spring-cloud-netflix.html
- SpringCloud 中文API文档(官方文档翻译版):https://springcloud.cc/spring-cloud-dalston.html
- SpringCloud中国社区:http://springcloud.cn/
- SpringCloud中文网:https://springcloud.cc