微服务
微服务
微服务架构:是一种架构模式,将一个应用程序划分为一组小的服务,每个服务运行在自己单独的进程中,服务之间通过HTTP的restful API相互沟通,相互协作、相互配合,为用户提供最终服务。强调避免集中式、统一的服务管理机制。
微服务·:是一个个微小的服务,强调的是服务的大小,狭义地说就是idea中一个个的model。将一个应用程序拆分后的各个独立模块。
微服务就好比医院中一个个独立的科室,牙科、骨科、外科等。而这些独立的科室就构成了医院,这就是微服务架构。
为什么有微服务?
-
传统的开发,将一个应用程序放在一个项目里面,打成一个war包,所有的模块,例如:订单、商品、交易、库存等,都在一个项目里面,这种服务称为巨石服务。All in one
-
这种架构一旦某个模块出问题,整个项目就会受到影响,甚至崩溃
-
分布式: 将一个服务应用,拆分为各个模块/服务,将模块独立出来,单独开发。各自有各自微小的进程,让专业的人,专业的模块做专业的事,让分工更加明确。各个模块独立部署
-
这种架构,服务之间不会影响,哪个模块出问题,受影响的只有那个模块,其它模块仍然可以工作。
微服务的作用
去耦合,各自的服务模块可以拥有自己的数据库,通过springcloudconfig,进行配置共同协作,各个模块可以单独的启动和销毁,类似于进程的概念。
微服务的优缺点
优点: 微服务让分工更加明确,开发效率提高。松耦合,代码更容易理解,部署灵活,可以接纳新的技术,扩展性好。
缺点: 开发人员要理解分布式系统的复杂性,随着服务的增多,运维难度压力增大。微服务之间的通信成本,依赖部署,数据的一致性如何保证,庞大的应用如何集成测试,如何监控性能…
微服务技术栈
-
微服务技术栈: 多种技术的集合体。
-
我们在讨论一个分布式微服务的架构的话,它需要有哪些维度???
一个分布式微服务的架构 | E时代下的数字化生活 |
---|---|
服务治理(Dubbo等) | 手机(HUAWEI等) |
服务注册(Zookeeper等) | 电脑(lenovo等) |
服务调用 | 路由器 |
服务负载均衡(nginx) | 充电宝 |
服务监控 | 智能音箱 |
…… | …… |
SpringCloud 提供以上技术的集合 | 小米科技都可以提供以上服务 |
微服务技术栈有哪些
微服务条目 | 落地技术 | 备注 |
---|---|---|
服务开发 | Springboot、Spring、SpringMVC | |
服务配置与管理 | Netfix公司的Archaius、阿里的Diamond | |
服务注册与发现 | Eureka、Consul、Zookeeper等 | |
服务调用 | Rest、RPC、gRPC(Google的) | |
服务熔断 | Hystrix、Envoy等 | |
负载均衡 | Ribbon、Nginx等 | |
服务接口调用(客户端调用服务的简化工具) | Feign等 | |
消息队列 | Kafka、RabbitMQ、ActiveMQ等 | |
服务配置中心管理 | SpringCloudConfig、Chef等 | |
服务路由(API网关) | Zuui等 | |
服务监控 | Zabbix、Nagios、Metrics、Spectator等 | |
全链路追踪 | Zipkin、Brave、Dapper等 | |
服务部署 | Docker、OpenStack、Kubernetes等 | |
数据流操作开发包 | SpringCloud Stream(封装与Redis、Rabbit、Kafka等发送接收消息) | |
事件消息总线 | SpringCloud Bus | |
– |
为什么选SpringCloud
与其它分布式微服务框架进行对比,它社区活跃度高,阿里的Dubbo已经五年没有维护了,现在HSF(High Speed Framework)
支持的微服务条目多