微服务概述:
它提倡将单一应用程序划分成一组小的服务,每个服务运行在独立自己的进程中
- 技术角度理解:
微服务化的核心技术就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。
传统项目:
微服务项目:
微服务与微服务架构
- 微服务
强调的是服务的大小,它关注的是某一点,是具体解决一个问题/提供落地对应服务的一个服务应用,狭义的看,可以看做idea里面的一个个微服务工程/或者Module - 微服务架构
是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、配合,每个服务运行在其独立的进程中,另外,应当尽量避免统一的、集中式的服务管理机制。
简单来说:微服务的医院的每个科室,微服务架构相当于一个医院,微服务组成了微服务架构。
微服务的优缺点
- 优点
每个服务足够内聚,足够小,代码容易理解,能聚焦一个指定业务功能或业务需求
开发简单,效率高,一个服务就干一件事
微服务是松耦合的,在开发和部署阶段都是独立的
微服务只是业务逻辑代码,不会和HTML、CSS或其他界面组件混合
每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库,可以灵活搭配。 - 缺点
开发人员处理分布式系统复杂性
运维成本高
系统部署依赖
服务通信成本高
微服务技术栈有哪些
技术栈:就是多种技术的集合
一个分布式的微服务架构,需要哪些维度?
微服务条目 | 落地技术 |
---|---|
服务开发 | SpringBoot、Spring、SpringMVC |
服务配置与管理 | Netflix公司的Archaius、阿里的Diamind等 |
服务注册与发现 | Eureka、Consul、Zookeeper等 |
服务调用 | Rest、RPC、gRPC |
服务熔断器 | Hystrix、Envoy等 |
负载均衡 | Ribbon、Nginx等 |
服务接口调用(客户端调用服务的简化工具) | Feign等 |
消息队列 | Kafka、RabbitMQ、ActiveMQ等 |
服务配置中心管理 | SpringCloudConfig、Chef等 |
服务路由(API网关) | Zuul等 |
服务监控 | Zabbix、Nagios、Metrics、Spectator |
全链路追踪 | Zipkin、Brave、Dapper等 |
服务部署 | Docker、OpernStack、Kubernetes |
数据流操作开发包 | SpringCloud Stream(封装与Redis,Rabbit,Kafaka等发送接收消息) |
事件消息总线 | Spring Cloud Bus |
… |
springCloud就是相当于把上面所有的都整合了,
举个例子来说,你要买电脑、手机、电视、洗衣机,你可以买好多品牌的,什么OPPO,华为,爱立信、海尔、这些,但是你也可以都在小米买,小米全都有,都整合了,一条龙服务,一套带走。
springCloud,基于springboot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件。springCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的几何体,俗称微服务全家桶。
springCloudspringBoot是什么关系?
蓝色部分就是一个个springboot
springcloud关注全局的微服务协调整理治理框架,将springboot开发的一个个单体微服务整合并管理起来
springboot可以离开springcloud独立使用开发项目,但是springcloud离不开springboot,属于依赖关系,
springboot专注于快速,方便的开发单个微服务,springcloud关注全局的服务治理框架
为什么选择springCloud作为微服务架构
springcloud和dubbo的区别
1、通讯机制不同:springcloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
2、品牌机与组装机的区别
3、社区支持与更新力度
springcloud文档及中文社区
https://springcloud.cc/spring-cloud-dalston.html
https://springcloud.cc/
http://springcloud.cn/