微服务
微服务架构:是一种架构模式,将一个应用程序划分为一组小的服务,每个服务运行在自己单独的进程中,服务之间通过HTTP的restful API相互沟通,相互协作、相互配合,为用户提供最终服务。微服务框架案例:www.b123.com. 强调避免集中式、统一的服务管理机制。
微服务·:是一个个微小的服务,强调的是服务的大小,狭义地说就是idea中一个个的model。将一个应用程序拆分后的各个独立模块。
微服务就好比医院中一个个独立的科室,牙科、骨科、外科等。而这些独立的科室就构成了医院,这就是微服务架构。
1
为什么有微服务?
传统的开发,将一个应用程序放在一个项目里面,打成一个war包,所有的模块,例如:订单、商品、交易、库存等,都在一个项目里面,这种服务称为巨石服务。All in one
这种架构一旦某个模块出问题,整个项目就会受到影响,甚至崩溃
分布式: 将一个服务应用,拆分为各个模块/服务,将模块独立出来,单独开发。各自有各自微小的进程,让专业的人,专业的模块做专业的事,让分工更加明确。各个模块独立部署
这种架构,服务之间不会影响,哪个模块出问题,受影响的只有那个模块,其它模块仍然可以工作。
微服务的作用
去耦合,各自的服务模块可以拥有自己的数据库,通过springcloudconfig,进行配置共同协作,各个模块可以单独的启动和销毁,类似于进程的概念。
微服务的优缺点
优点: 微服务让分工更加明确,开发效率提高。松耦合,代码更容易理解,部署灵活,可以接纳新的技术,扩展性好。
缺点: 开发人员要理解分布式系统的复杂性,随着服务的增多,运维难度压力增大。微服务之间的通信成本,依赖部署,数据的一致性如何保证,庞大的应用如何集成测试,如何监控性能…
微服务技术栈
微服务技术栈: 多种技术的集合体。
我们在讨论一个分布式微服务的架构的话,它需要有哪些维度
一个分布式微服务的架构 E时代下的数字化生活
服务治理(Dubbo等) 手机(HUAWEI等)
服务注册(Zookeeper等) 电脑(lenovo等)
服务调用 路由器
服务负载均衡(nginx) 充电宝
服务监控 智能音箱
…… ……
SpringCloud 提供以上技术的集合 小米科技都可以提供以上服务
微服务技术栈有哪些 微服务框架案例:www.b123.com
微服务条目 落地技术 备注
服务开发 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)
支持的微服务条目多