【Go语言-微服务学习之路】——RPC和gRPC

      最后更新:2022-07-18 10:54:37 手机定位技术交流文章

      文章目录

      • 一、微服务简介
        • 统一服务架构及微服务架构
      • 二、RPC协议
      • 三、GRPC协议
        • 1. 简介
        • 2. GRPC安装
        • 3. GRPC使用
        • 4.小演示

      一、微服务简介

      服务是一个相对较小且独立的功能单元或功能单元组,用户可以认为是最小的函数集。服务分解原则:高封装低耦合
      微服务架构风格是开发一个单个应用程序作为一个小服务群的方式。每个服务程序在其本身的进程中运行,它也与轻量级机制(通常是HTTP资源API)通信。这些服务以业务功能为基础。该机器可以通过完全自动部署来独立部署.这些服务器可以用不同的编程语言编写,使用不同的数据存储技术,尽量避免集中管理。微服务架构的本质:分离和结合

      易混淆概念:
      ​微服务架构:将复杂的系统使用组件化的方式进行拆分,并使用轻量级通讯方式进行整合的一种设计方法。
      微服务: 由这个架构设计方法分开的独立组件化的小应用程序。

      统一服务架构及微服务架构

      单体式服务架构
      特性:

      • 随着发展的复杂性增加, 问题很难解决.
      • 技术债务逐渐上升。
      • 高耦合和高维护成本!
        1. 有一个错误,很难检测
        2. 解决旧的错误,会有新的错误
      • 持续交付时间较长。
      • 技术选择是昂贵而风险的.
      • 扩展性较差
        1. 垂直扩展: 通过增加单一系统线程的负载来实现扩展.
        2. 级别扩展: 通过增加更多的系统成员来实现扩展.

      微服务架构

      • 优点:
        1. 职责单一
        2. 轻量级通信
        3. 独立性
        4. 迭代开发。
      • 缺点:
        1. 运维成本高
        2. 分部式复杂度
        3. 接口成本高
        4. 重复性劳动
        5. 业务分离困难。

      单一服务与微服务的比较

      传统单体架构 分布式微服务化架构
      新功能开发 需要时间 容易开发和实现
      部署 不经常而且容易部署 经常发布,部署复杂
      隔离性 故障影响范围大 故障影响范围小
      架构设计 初期技术选型难度大 设计逻辑难度大
      系统性能 相对快速,少量摄入 相对慢,高吞吐量
      系统运维 运维难度简单 运维难度复杂
      新人上手 学习曲线大(应用逻辑) 学习曲线大(结构逻辑)
      技术 技术单一而且封闭 技术多样,易于开发
      测试和差错 简单 复杂(每个服务必须单独测试,需要集群测试)
      系统扩展性 扩展性差 扩展性好
      系统管理 重点在于开发成本 重点是服务管理和日程安排

      二、RPC协议

      RPC(Remote Procedure Call Protocol):远程过程调用协议。可以像调用本地函数一样,去调用远程函数。

      • 通过rpc协议,传递:函数名、函数参数。达到在本地,调用远端函数,得返回值到本地的目标。
      • 统一的RPC框架可以统一一系列“非业务”技术,如序列化、反序列化、网络框架、连接池、排放线程、加班处理、状态机等。

      为什么微服务使用RPC:

      1. 每个服务都包含在一个过程中,它们是“独立”的。
      2. 不同的语言实现可以在进程之间使用。

      三、GRPC协议

      1. 简介

      与许多RPC系统一样,gRPC基于以下原则:定义指定如何远程调用服务
      当使用probe编译器服务f时,只使用gRPC编译它。

      参考资料:
      gRPC官方文件中文版本: http://doc.Oschina.Net/grpc?t=60133
      gRPC网站: https://grpc.io

      2. GRPC安装

      方法1:正式推荐安装方法(需要科学的互联网访问)

      方法2:通过Github下载各种依赖库,然后配置

      方法3:
      链接: https://pan.Baidu.com/s/1eFfin2a7AIF-MUjr58iwew
      提取码:3btj

      x.zipgoogle.golang.org.zip拖拽到虚拟机中。

      3. GRPC使用

      原始文件编译

      例如: Pandas是一个基于 NumPy的工具,用于解决数据分析任务。

      4.小演示

      新建一个person.proto的proto文件

      使用命令protoc --go_out=plugins=grpc:. *.proto编译,会自动生成peron.pb.go文件,这个生成的文件不会做任何修改。

      写服务端,新建一个server.go文件

      写服务端,新建一个client.go文件

      运行服务端和客户端

      如果终端写成两种不同的语言, grpc可以保证终端与客户端之间的通信,协议可以保证两种语言之间的正常数据交换

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29985.html

          热门文章

          文章分类