微服务
云程序员
“指点江山”的云程序员
展开
-
[从RPC到Go-Micro 捌]Go-Micro解耦利器--事件驱动机制
之前的文章中我们已经学习了使用go-micro创建微服务,并实现了服务的调用。我们具体的实现是实例化了client对象,并调用了对应服务的相关方法。这种方式可以实现系统功能,但有比较大的缺点。 我们通过举例来说明:在某个系统中存在用户服务(user service)、产品服务(product service)和消息服务(message service)。如果用户服务中要调用消息服务中的功能方法,则具体的实现方式可用下图所示方法表示: 按照正常的实现是在user service模块的程序中实例化messag原创 2020-11-10 23:50:05 · 558 阅读 · 1 评论 -
[从RPC到Go-Micro 柒]Go-Micro的简单使用
在前面使用gRPC一步一步搭建使用流程,但是以上这些具体的方案都是为了解决微服务实践过程中具体的某个问题而提出的,实现微服务架构的项目开发。在具体的项目开发过程中,开发者聚焦的是业务逻辑的开发和功能的实现,大量的环境配置,调试搭建等基础性工作会耗费相当一部分的精力,因此有必要将微服务架构中所涉及到的,相关的解决方案做集中管理和维护。这就是我们要学习的Micro。 Go-Micro 介绍 Micro是一个简化分布式开发的微服务生态系统,该系统为开发分布式应用程序提供了高效,便捷的模块构建。主要目的是简化分布式原创 2020-11-09 20:13:48 · 1355 阅读 · 2 评论 -
[从RPC到Go-Micro 陆]gRPC拦截器
在上面篇幅中知道了gRPC的两种认证方式:TLS验证和Token验证。 但是,每次都在接口中书写重复的代码,效率太低。那么有没有更好的方法? 如同web框架的拦截器一样的东西 答案是有的,gRPC中也有拦截器。 拦截器 Interceptor 使用拦截器,首先需要注册。 在grpc中编程实现中,可以在NewSever时添加拦截器设置,grpc框架中可以通过UnaryInterceptor方法设置自定义的拦截器,并返回ServerOption。具体代码如下: grpc.UnaryInterceptor()原创 2020-11-08 14:20:18 · 513 阅读 · 0 评论 -
[从RPC到Go-Micro 伍]给gRPC加安全认证
授权认证 gRPC中默认支持两种授权方式,分别是:SSL/TLS认证方式、基于Token的认证方式。 SSL/TLS认证方式 SSL全称是Secure Sockets Layer,又被称之为安全套接字层,是一种标准安全协议,用于在通信过程中建立客户端与服务器之间的加密链接。 TLS的全称是Transport Layer Security,TLS是SSL的升级版。在使用的过程中,往往习惯于将SSL和TLS组合在一起写作SSL/TLS。 简而言之,SSL/TLS是一种用于网络通信中加密的安全协议。 SSL/TL原创 2020-11-08 01:02:28 · 786 阅读 · 0 评论 -
[从RPC到Go-Micro 肆]gRPC的四种模式
gRPC有简单模式、客户端流模式、服务端流模式、双向流模式。简单模式在前面章节中已实现。接下来就看客户端流模式、服务端流模式、双向流模式。 服务端流模式 在服务端流模式的RPC实现中,服务端得到客户端请求后,处理结束返回一个数据应答流。在发送完所有的客户端请求的应答数据后,服务端的状态详情和可选的跟踪元数据发送给客户端。服务端流RPC实现案例如下: 服务接口定义 在.proto文件中定义服务接口,使用服务端流模式定义服务接口,如下所示: syntax = "proto3"; package message原创 2020-11-08 00:05:25 · 605 阅读 · 0 评论 -
[从RPC到Go-Micro 叁]Go语言使用gRPC
使用官方的RPC库,需要自己编码服务的注册等操作,从而增加了许多重复性的操作。所以,gRPC便出现在视野中。 什么是gRPC gRPC介绍 gRPC是由Google公司开源的一款高性能的远程过程调用(RPC)框架,可以在任何环境下运行。该框架提供了负载均衡,跟踪,智能监控,身份验证等功能,可以实现系统间的高效连接。另外,在分布式系统中,gRPC框架也有有广泛应用,实现移动社会,浏览器等和服务器的连接。其支持Go、Java、Python等众多语言 gRPC官网与仓库 gRPC官方网站:https://gr原创 2020-11-07 18:09:42 · 463 阅读 · 0 评论 -
[从RPC到Go-Micro 贰]RPC与Protobuf结合
Protobuf是什么 Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。 Protobuf的特点 protobuf编译器下载 前往地址https://github.com/protocolbuffers/protobuf/releases选择适合的可执行包进行下载 将exe加入环境变量中即可 应用场景定义 需求:假设在一个系统中,有订单模块(Order),其他模块想要实现RPC的远程工程调用,根据订单ID和时间戳可以获取订单信息。如果获取成功就原创 2020-11-07 00:09:10 · 245 阅读 · 0 评论 -
[从RPC到Go-Micro 壹]Go语言实现RPC编程
根据上篇内容,了解到RPC的原理及调用过程,本篇则使用Go语言的标准库中的RPC库实现简单的RPC小Demo 标准库中的RPC库 包名: net/rpc 使用RPC库实现简单的计算功能 首先是提供方法暴露的一方–服务器。 一、服务定义及暴露 在编程实现过程中,服务器端需要注册结构体对象,然后通过对象所属的方法暴露给调用者,从而提供服务,该方法称之为输出方法,此输出方法可以被远程调用。当然,在定义输出方法时,能够被远程调用的方法需要遵循一定的规则。我们通过代码进行讲解: func (t *T) MethodN原创 2020-11-06 23:50:08 · 227 阅读 · 0 评论 -
[从RPC到Go-Micro 零]RPC简介及原理
RPC简介 RPC是Remote Procedure Call Protocol单词首字母的缩写,简称为:RPC,翻译成中文叫远程过程调用协议。所谓远程过程调用,通俗的理解就是可以在本地程序中调用运行在另外一台服务器上的程序的功能方法。这种调用的过程跨越了物理服务器的限制,是在网络中完成的,在调用远端服务器上程序的过程中,本地程序等待返回调用结果,直到远端程序执行完毕,将结果进行返回到本地,最终完成一次完整的调用。 本地程序调用 在正常情况下,我们会在本地执行程序,如以下Go代码: func Sub(a原创 2020-11-06 23:39:07 · 401 阅读 · 0 评论