YaPiBlog


You look look you one day day de

gRpc及Protobuf

概念介绍 RPC RPC代指远程过程调用(Remote Procedure Call) 包含了传输协议和编码(对象序列号)协议 允许运行于一台计算机的程序调用另一台计算机的子程序(比如:程序代码调用一个Redis) 简单、高效 gRpc 和 ProtoBuff gRpc是一个高性能、开源、通用的RPC框架 基于HTTP2.0协议标准设计开发 支持多语...

Go微服务

介绍 微服务与DDD 领域驱动设计(Domain Driven Design) 真正决定软件复杂性的是设计方法 有助于指导我们确定系统边界 能够聚焦在系统核心元素上 帮助我们拆分系统 康威定律:组织架构要和微服务拆分进行对应 概念 领域:领域是有范围界限的,也可以说是有边界的 核心域:核心域是业务系统的核心价值 通用子域...

Kafka解析

特征 分布式流处理平台 提供发布订阅及Topic支持 吞吐量高但不保证消息有序性(其他消息队列一定保证消息有序性) 其他消息队列消息消费完过后,就会消失,kafka不会,可以使用offset消费历史数据 应用场景 日志收集或流式系统 消息系统(对消息的有序性不在意的地方,比如:订单服务) 用户活动跟踪或运营指标监控,比如淘宝这种类似平台 吞吐量为什么...

Go微服务网关(八)TCP代理相关

thrift Facebook的一个开源项目,后来进入Apache进行孵化 thrift是支持跨语言的,所以有自己的一套IDL thrift的网络协议建立在TCP协议基础上 目前主要功能是支持rpc方法调用 使用 首先编写 thrift_gen.thrift 运行IDL生成命令 2.1 thrift --gen go thrift_gen.thrift...

Go微服务网关(七)http相关协议

https、http、http2 https是http安全版本,http2是一种传输协议,两者并没有本质联系 https和http区别 http协议的数据传输是铭文的,是不安全的,https使用了ssl/tls协议进行了加密处理 默认端口不一样,http是80,https是443 http1.1与http2区别 ht...

Go微服务网关(六)Hystrix解析

中间件 意义 提高复用、隔离业务,可随意组合,拓展相关功能 实现 中间件一般都封装在路由上,路由是URL请求分发的管理器 就构建模式来说,一般有两种方式 基于链表构建中间件,缺点,实现复杂,调用方式不灵活 使用数组构建中间件,控制灵活方便,比如:GIN框架 中间件实例 限流 高并发系统三大利器:缓存、降级、限流 缓存:提升系统访问速度和增大处理容量,为相应业务...

Go微服务网关(五)HTTP代理

HTTP代理 前置知识点 特殊Header头 X-Forwarded-For 记录最后直连实际服务器之前,整个代理过程,比如从原始ip到代理服务器1,再到代理服务器2,再到访问地址IP 那么它的值就是:原始IP,代理ip1,代理ip2,能伪造,原始访问端可以直接设置 X-Real-IP 真是IP,在第一层代理服务器就...

Go微服务网关(四)网络代理

网络代理 什么是网络代理? 用户通过代理请求信息 请求通过代理完成转发到达目标服务器 目标服务器响应过后再通过网络代理回传给用户 网络代理与网络转发的区别 网络代理,用户不直接连接目标服务器,而是连接代理服务器,由代理服务器去连接目标服务器。获取到数据后返回到代理服务器,再返回给原请求服务器 网络转发,是原服务器直接连接目标服务器,由路由器对报文进行转发 ...

Go微服务网关(三)Http服务及源码

HTTP实例 服务端 func main() { // 创建路由器 mux := http.NewServeMux() // 设置路由规则 mux.HandleFunc("/bye", sayBye) // 创建服务器 server := &http.Server{ Addr: Addr, WriteTimeout: time.Second *...

Go微服务网关(二)TCP及UDP实例

TCP实例 服务端 func main(){ //1、监听端口 listener, err := net.Listen("tcp", "0.0.0.0:9089") if err != nil { fmt.Printf("listen fail, err: %v\n", err) return } //2.建立套接字连接 for { conn, err :...