关于微服务,这些你都了解吗-微服务介绍


目录
  • gRPC 是一个高性能、开源、通用的RPC框架,基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务,并且为客户端和服务端自动生成可靠的功能库。

  • 在gRPC客户端可以直接调用不同服务器上的远程程序,使用起来就像调用本地程序一样,很容易去构建分布式应用和服务。和很多RPC系统一样,服务端负责实现定义好的接口并处理客户端的请求,客户端根据接口描述直接调用需要的服务。客户端和服务端可以分别使用gRPC支持的不同语言实现。

clipboard.png

clipboard.png

1.2 gRPC与Protobuf介绍

  • 微服务架构中,由于每个服务对应的代码库是独立运行的,无法直接调用,彼此间的通信就是个大问题
  • gRPC可以实现微服务,将大的项目拆分为多个小且独立的业务模块,也就是服务,各服务间使用高效的protobuf协议进行RPC调用,gRPC默认使用protocol buffers,这是google开源的一套成熟的结构数据序列化机制
  • 可以用proto files创建gRPC服务,用message类型来定义方法参数和返回类型

image.png

1.3 gRPC主要特性

  • 强大的IDL

    gRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。

  • 多语言支持

    gRPC支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前已提供了C版本grpc、Java版本grpc-java 和 Go版本grpc-go,其它语言的版本正在积极开发中,其中,grpc支持C、C++、Node.js、Python、Ruby、Objective-C、PHP和C#等语言,grpc-java已经支持Android开发。

  • HTTP2

    gRPC基于HTTP2标准设计,所以相对于其他RPC框架,gRPC带来了更多强大功能,如双向流、头部压缩、多复用请求等。这些功能给移动设备带来重大益处,如节省带宽、降低TCP链接次数、节省CPU使用和延长电池寿命等。同时,gRPC还能够提高了云端服务和Web应用的性能。gRPC既能够在客户端应用,也能够在服务器端应用,从而以透明的方式实现客户端和服务器端的通信和简化通信系统的构建。

1.4 安装gRPC和Protobuf

  • gRPC与ProtoBuf的安装大家自行百度,挺容易安装的。

七 Go Micro介绍

主要内容可以查看我写的另外一篇文章:
Go Micro介绍与入门 - 掘金 (juejin.cn)

接下来简单了解一下go-micro

1.1 go-micro简介

  • Go Micro是一个插件化的基础框架,基于此可以构建微服务,Micro的设计哲学是可插拔的插件化架构
  • 在架构之外,它默认实现了consul作为服务发现,通过http进行通信,通过protobuf和json进行编解码
  • 是用来构建和管理分布式程序的系统
  • Runtime (运行时) : 用来管理配置,认证,网络等
  • Framework (程序开发框架) : 用来方便编写微服务
  • Clients (多语言客户端) : 支持多语言访问服务端

1.2 go-micro的主要功能

  • 服务发现:自动服务注册和名称解析。

  • 负载均衡:基于服务发现构建的客户端负载均衡。

  • 消息编码:基于内容类型的动态消息编码。

  • 请求/响应:基于RPC的请求/响应,支持双向流。

  • Async Messaging:PubSub是异步通信和事件驱动架构的一流公民。

  • 可插拔接口:Go Micro为每个分布式系统抽象使用Go接口,因此,这些接口是可插拔的,并允许Go Micro与运行时无关,可以插入任何基础技术

    • 插件地址:https://github.com/micro/go-plugins

1.3 go-micro特性

  • api: api 网关。使用服务发现具有动态请求路由的单个入口点. API 网关允许您在后端构建可扩展的微服务体系结构,并在前端合并公共 api. micro api 通过发现和可插拔处理程序提供强大的路由,为 http, grpc, Websocket, 发布事件等提供服务.
  • broker: 允许异步消息的消息代理。微服务是事件驱动的体系结构,应该作为一等公民提供消息传递。通知其他服务的事件,而无需担心响应.
  • network: 通过微网络服务构建多云网络。只需跨任何环境连接网络服务,创建单个平面网络即可全局路由. Micro 的网络根据每个数据中心中的本地注册表动态构建路由,确保根据本地设置路由查询.
  • new: 服务模板生成器。创建新的服务模板以快速入门. Micro 提供用于编写微服务的预定义模板。始终以相同的方式启动,构建相同的服务以提高工作效率.
  • proxy: 建立在 Go Micro 上的透明服务代理。将服务发现,负载平衡,容错,消息编码,中间件,监视等卸载到单个位置。独立运行它或与服务一起运行.
  • registry: 注册表提供服务发现以查找其他服务,存储功能丰富的元数据和终结点信息。它是一个服务资源管理器,允许您在运行时集中和动态地存储此信息.
  • store: 有状态是任何系统的必然需求。我们提供密钥值存储,提供简单的状态存储,可在服务之间共享或长期卸载 m 以保持微服务无状态和水平可扩展.
  • web: Web 仪表板允许您浏览服务,描述其终结点,请求和响应格式,甚至直接查询它们。仪表板还包括内置 CLI 的体验,适用于希望动态进入终端的开发人员.

1.4 go-micro通信流程

clipboard.png

  • Server监听客户端的调用,和Brocker推送过来的信息进行处理。并且Server端需要向Register注册自己的存在或消亡,这样Client才能知道自己的状态
  • Register服务的注册的发现,Client端从Register中得到Server的信息,然后每次调用都根据算法选择一个的Server进行通信,当然通信是要经过编码/解码,选择传输协议等一系列过程的
  • 如果有需要通知所有的Server端可以使用Brocker进行信息的推送,Brocker 信息队列进行信息的接收和发布

1.5 go-micro架构图

clipboard.png

clipboard.png

八 小结

  • 学习微服务要首先对微服务有个系统认知,这篇文章能够帮助回顾

  • 微服务了解清楚,如果对概念还不清楚要在理清楚吸收

  • DDD模型架构很重要,能够帮助在开发的时候事半功倍

  • 要理解RPC与gRPC之间的关系

  • Go有很多gRPC框架,go-micro只是其中之一,但是也很重要

  • ProtoBuf是一个成熟的数据传输机制,弄清弄懂也很重要

最后

希望大家关注博主和关注专栏,第一时间获取最新内容

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验夏沫の梦学习交流群

相关