撰写于 2021
  • dubbo-go 中将 Kubernets 原⽣作为注册中⼼的设计和实现

    Thursday, January 14, 2021 在 Golang

    今天这篇⽂章将会介绍 dubbo-go 将 Kubernetes 作为注册中⼼的服务注册的初衷、设计⽅案,以及具体实现。 到⽬前为⽌该⽅案的实现已经被合并到 dubbo-go 的 master 分⽀。具体实现为关于 Kubernetes 的 PullRequest 。 Kubernetes管理资源的哲学 Kubernetes 作为容器集群化管理⽅案管理资源的维度可主观的分为服务进程管理和服务接⼊管理。 服务实例管理,主要体现⽅式为 Pod 设计模式加控制器模式,控制器保证具有特定标签 ( …

    更多

  • dubbo-go 中 REST 协议实现

    Thursday, January 14, 2021 在 Golang

    什么是 REST 协议 REST 是 REpresentational State Transfer(表述性状态转移)的简写,是一种软件架构风格。虽然 REST 架构风格不是一定要基于 HTTP 协议进行传输,但是因为 HTTP 协议的通用性和易用性,现在越来越多的 web 服务采用基于 HTTP 协议实现 RESTful 架构。 在 dubbo-go 中的 REST 协议指的是一种基于 HTTP 协议的远程调用方式。简单的来讲,REST 协议就是把dubbo 服务发布成 RESTful …

    更多

  • Dubbo-go 源码笔记(一)Server 端开启服务过程

    Thursday, January 14, 2021 在 Golang

    随着微服务架构的流行,许多高性能 rpc 框架应运而生,由阿里开源的 dubbo 框架 go 语言版本的 dubbo-go 也成为了众多开发者不错的选择。本文将介绍 dubbo-go 框架的基本使用方法,以及从 export 调用链的角度进行 server 端源码导读,希望能引导读者进一步认识这款框架。 当拿到一款框架之后,一种不错的源码阅读方式大致如下:从运行最基础的 helloworld demo 源码开始 —> 再查看配置文件 —> 开启各种依赖服务(比如zk、consul) …

    更多

  • dubbo-go 可信调用实现

    Thursday, January 14, 2021 在 Golang

    Apache Dubbo/Dubbo-Go 作为阿里巴巴开源的一款服务治理框架,因其适应 Java/Go 开发者面向接口的编程习惯、完全透明的调用方式、优越的性能以及强大的扩展性等优点,在国内使用非常广泛。除此之外,Dubbo 开源版本原生集成了很多开箱即用的服务治理功能,包括链路追踪,路由、负载均衡、服务注册发现、监控、认证等。 本文将讲解如何在 Dubbo/Dubbo-Go 中实现灵活,安全和高效的身份验证和授权方案。 可信的目的 为什么需要鉴权认证?实际生产中类似支付之类的安全性敏感的业务 …

    更多

  • 记一次对 dubbo-go-hessian2 的性能优化

    Tuesday, January 12, 2021 在 Golang

    dubbo-go-hessian2 是一个用 Go 实现的 hessian 协议 v2.0 版本的序列化库。从项目名称里可以看到主要用在 dubbo-go 这个项目里。hessian 协议作为 dubbo 的默认协议,因此对性能有比较高的要求。 立项 譬如有网文 基于Go的马蜂窝旅游网分布式IM系统技术实践 把 dubbo-go 与其他 RPC 框架对比如下: Go STDPRC: Go 标准库的 RPC,性能最优,但是没有治理; RPCX: 性能优势 2*GRPC + 服务治理; GRPC: …

    更多

  • dubbo-go 中如何实现路由规则功能

    Tuesday, January 12, 2021 在 Golang

    Let‘s Go! 最近在 Apache/dubbo-go(以下简称 dubbo-go )社区中,路由规则突然成了呼声最高的功能之一。那到底为什么需要路由规则? 先路由规则需要实现的功能: 路由规则( routing rule )是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。在发起一次 RPC 调用前起到过滤目标服务器地址的作用,过滤后的地址列表,将作为消费端最终发起 RPC 调用的备选地址。 试想该下场景:使用 dubbo-go 在生产环境上,排 …

    更多

  • 在dubbo-go中使用sentinel

    Monday, January 11, 2021 在 Golang

    时至今日,Apache/dubbo-go(以下简称 dubbo-go )项目在功能上已经逐步对齐java版本,稳定性也在不同的生产环境得到了验证。社区便开始再服务治理、监控等方向发力。随着 1.2和1.3 版本发布, dubbo-go 新增了大量此类新feature。 今天我们聊一聊限流相关话题,此前dubbo-go已经支持了tps limit、execute limit 、hystrix 的内置filter,用户只要简单配置就能马上用上。但我们知道,在 java 的 dubbo 生态中,有一项 …

    更多

  • 无缝衔接 gRPC 与 dubbo-go

    Monday, January 11, 2021 在 Golang

    最近我们 dubbo-go 社区里面,呼声很大的一个 feature 就是对 gRPC 的支持。在某位大佬的不懈努力之下,终于弄出来了。 今天我就给大家分析一下大佬是怎么连接 dubbo-go 和 gRPC 。 gRPC 先来简单介绍一下 gRPC 。它是 Google 推出来的一个 RPC 框架。gRPC是通过 IDL ( Interface Definition Language )——接口定义语言——编译成不同语言的客户端来实现的。可以说是RPC理论的一个非常非常标准的实现。 …

    更多

  • Dubbo Go Getty 开发日志

    Monday, January 11, 2021 在 Golang

    0 说明 [getty][3]是一个go语言实现的网络层引擎,可以处理TCP/UDP/websocket三种网络协议。 2016年6月我在上海做一个即时通讯项目时,接口层的底层网络驱动是当时的同事sanbit写的,原始网络层实现了TCP Server,其命名规范学习了著名的netty。当时这个引擎比较简洁,随着我对这个项目的改进这个网络层引擎也就随之进化了(添加了TCP Client、抽象出了 TCP connection 和 TCP session),至2016年8月份(又添加 …

    更多

  • dubbo-go 中如何实现远程配置管理?

    Monday, January 11, 2021 在 Golang

    之前在 Apache/dubbo-go(以下简称 dubbo-go )社区中,有同学希望配置文件不仅可以放于本地,还可以放于配置管理中心里。那么,放在本地和配置管理中心究竟有哪些不一样呢? 放在本地,每次更新需要重启,配置文件管理困难,无法做到实时更新即刻生效。此外,本地文件还依赖人工版本控制,在微服务的场景下,大大的增加了运维的成本与难度。 而配置管理中心提供了统一的配置文件管理,支持文件更新、实时同步、统一版本控制、权限管理等功能。 目标 基于以上几个背景,可以总结出以下目标 与 Dubbo …

    更多