微服务与微服务架构

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 Google Facebook
社区活跃程度(github) 一般 一般 已经不维护5年了
学习难度 中等
文档丰富度 一般 一般 一般
其他 spring cloud bus为我们的应用程序带来了更多管理端点 支持降级 Netflix内部在开发集成gRPC IDL定义 实践公司比较多

通过对比发现,springCloud占有绝对的优势,再下面的时间里我会跟大家一同分享我学习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,一同进步。




以上是关于微服务与微服务架构的主要内容,如果未能解决你的问题,请参考以下文章

微服务与微服务架构

微服务与微服务架构

3张图看懂分布式架构与微服务架构的关系

3张图看懂分布式架构与微服务架构的关系

微服务与微服务架构

微服务架构的前世今生:SOA 与微服务的区别