目录

 微服务框架整体架构

 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;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐