Go:微服务框架开发一
目录 微服务框架整体架构 http/2介绍 grpc介绍微服务框架整体架构微服务框架的意义性能 专业的人做专业的事情 专注框架层面的优化稳定性 专门的团队进行维护 Bug快速fix效率 解决共性问题...
目录
微服务框架整体架构
http/2介绍
grpc介绍
微服务框架整体架构
微服务框架的意义
性能
专业的人做专业的事情
专注框架层面的优化
稳定性
专门的团队进行维护
Bug快速fix
效率
解决共性问题
提高代码复用粒度
开发过程中的共性问题
客户端调用(rpc:Remote Procedure Call )
RPC(Remote ProCedure Call)---- 远程过程调用:它是一种通过网络从远程计算机程序上的请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP和UDP,为通信程序之间携带信息数据。在OSI模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
网络通信
连接管理
建立连接
发送数据包
接收数据包
超时控制
TCP粘包问题解决
连接池
数据传输问题
序列化:本地数据结构转成网络数据 [字节流 ]
反序列化:网络数据 [字节流 ]转成本地数据结构
客户端调用(rpc:Remote Procedure Call )
负载均衡
随机算法
轮询算法
加权随机算法
加权轮询算法
一致性哈希算法
服务发现
通过服务名发现服务的位置(ip列表)
服务框架
网络通信
连接管理
超时控制
数据传输
序列化
反序列化
服务框架
请求路由
通过客户端调用的方法,路由到业务对应的处理函数
日志组件
服务访问记录
异常处理
限流和熔断
限流策略
令牌桶算法
熔断策略
电路熔断策略
自动摘除
服务注册、发现=》自动摘除
服务治理
分布式追踪系统
Dapper论文
Zipkin:https://zipkin.apache.org/
Jaeger: https://www.jaegertracing.io/
Opentrace:https://opentracing.io/
服务监控
Metrics采样打点
Prometheus
Grafana 展示
微服务框架交互流程
Http2介绍
在http1.1基础上做了大量的改进
多路复用 二进制分帧 首部压缩 服务器推送
多路复用
二进制分帧
头部压缩
全部头部定义
服务器推送
Go只要使用https,默认支持http2
如何兼容
通过客户端协商解决,协商算法:ALPN
HTTP1
HTTP2
grpc介绍
基于http2 的rpc框架
IDL使用protobuf
先使用idl描述服务接口
通过工具自动生成代码框架
业务使用接口
多语言支持
Go
Java
C++
syntax = "proto3";
package pb;
//The Add service definition
service Add{
//Sums two integers
rpc Sum(SumRequest) return (SumReply) {}
//Concatenates two strings
rpc Concat(ConcatRequest) return (ConcatReply) {}
}
//The sum request contains two parameters.
message SumRequest{
int64 a = 1;
int64 b = 2;
}
//The sum response contains the result of the calculation
message SumReply{
int64 v = 1;
string err = 2;
}
更多推荐
所有评论(0)