微服务与微服务架构
Posted 魏卯卯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务与微服务架构相关的知识,希望对你有一定的参考价值。
每日英文
If you shed tears when you miss the sun, you also miss the stars.
如果你因为错过太阳而哭泣,你将会错过繁星。--泰戈尔《飞鸟集》
卯卯有话说
最近几天感冒+换工作一直没时间写文章,抱歉啦。
微服务、微服务架构
举个栗子:
好比医院,微服务就是医院中的一个个小小的科室,而微服务架构就是医院。比如:springcloud就是微服务架构的落地实现,springboot就是微服务的落地实现。
微服务条目 | 落地技术 |
服务开发 | springboot、spring、springMVC |
服务配置与管理 | Netflix公司的Archaius、阿里的Diamond等 |
服务注册与发现 | Eureka、Consul、Zookeeper等 |
服务熔断器 | Hystrix、Envoy等 |
负载均衡 | Ribbon、nginx等 |
服务接口调用(客户端调用服务的简化工具) | Feign,RestTemplate等 |
消息队列 | Kafka、RabbitMQ、ActiveMQ等 |
服务配置中心管理 | SpringCloudConfig、Chef等 |
服务路由(API网关) | Zuul等 |
服务监控 | Zabbix、Nagios、Metrics、Spectator等 |
全链路追踪 | Zipkin、Brave、Dapper等 |
服务部署 | Docker、OpenStack、Kubernetes等 |
数据流操作开发包 | SpringCloud Stream(封装与redis、rabbit、kafka等发送接收消息) |
事件消息总线 | spring Cloud Bus |
.......... |
比如Netflix、Sina、Google、Facebook等都有自己的微服务架构,下面我们来对比一下,这些微服务架构的区别。
功能点/服务框架 | 备选方案 | ||||
Netflix/Spring Cloud | Motan | gRPC | Thrift | Dubbo/Dubbox | |
功能定位 | 完整的微服务框架 | RPC框架,但整合了ZK或Consul,实现集群环境的基本的服务注册/发现 | RPC框架 | RPC框架 | 服务框架 |
支持Rest | 是,Ribbon支持多种可插拔的序列化选择 | 否 | 否 | 否 | 否 |
支持RPC | 否 | 是(Hession2) | 是 | 是 | 是 |
支持多语言 | 是(Rest形式)? | 否 | 是 | 是 | 否 |
服务注册/发现 | 是(Eureka)Eraka服务注册表,Karyon服务端框架支持服务自注册和健康检查 |
是(Zookeeper/consul) | 否 | 否 | 是 |
负载均衡 | 是(服务端zuul+客户端Ribbon) Zuul-服务,动态路由 云端负载均衡 Eureka(针对中间层服务器) | 是(客户端) | 否 | 否 | 是(客户端) |
配置服务 | Netflix Archaius Springcloud Config Server集中配置 | 是(Zookeeper提供) | 否 | 否 | 否 |
服务调用链监控 | 是(zuul) Zuul提供边缘服务,API网关 | 否 | 否 | 否 | 否 |
高可用/容错 | 是(服务端Hystrix+客户端Ribbon) | 是(客户端) | 否 | 否 | 是(客户端) |
典型应用案例 | Netflix | Sina | |||
社区活跃程度(github) | 高 | 一般 | 高 | 一般 | 已经不维护5年了 |
学习难度 | 中等 | 低 | 高 | 高 | 低 |
文档丰富度 | 高 | 一般 | 一般 | 一般 | 高 |
其他 | spring cloud bus为我们的应用程序带来了更多管理端点 | 支持降级 | Netflix内部在开发集成gRPC | IDL定义 | 实践公司比较多 |
通过对比发现,springCloud占有绝对的优势,再下面的时间里我会跟大家一同分享我学习springCloud的心得。我们先来了解一下SpringCloud。
spring cloud子项目包括:
Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。
Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。
Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。
Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。
Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。
Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。
Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。
Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。
Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。
SpringCloud特点
1:约定优于配置
2:开箱即用、快速启动
3:适用于各种环境
4:轻量级的组件
5:组件支持丰富,功能齐全
这篇文章只是大体的介绍了一下微服务和微服务架构,描述了一下SpringCloud,在接下来的日子里希望能与大家一同学习SpringCloud,一同进步。
以上是关于微服务与微服务架构的主要内容,如果未能解决你的问题,请参考以下文章