Go语言微服务开发框架实践--go chassis(上篇)

主流Golang框架对比以及介绍 golang一些基本开发框架介绍以及对比 阅读详情

Go chassis是一个go语言微服务开发框架

通过这篇文章中,我将从设计思路到源码剖析来深度分析Go Chassis。并且介绍自己在实践过程中的go语言性能调优和最佳实践,最后将使用go chassis编写一个http服务,此为上篇,将主要介绍go chassis的运行机制

项目地址:https://github.com/go-chassis/go-chassis/

为什么我们要用go语言来开发微服务?

go依然是一门新兴的语言,和java比它还非常年轻,不过随着kubenetes和docker等项目的成功,可以说go语言已经成为了非常好的中间层开发语言,并且逐渐流行起来。

编译速度快,支持多平台,内存占用低,轻量级协程等。

他的协程设计降低了开发者门槛,让更多人可以轻松地编写支持高并发的后台服务

为什么使用Go chassis

 

当你要解决微服务模式带来的新问题的时候你要实现多少代码来处理分布式带来的复杂度?

我相信一个成熟的开发框架需要2万行以上的代码。而go chassis正是这样一个框架

  • go chassis集成了很多的功能,提供了一站式服务,能够让用户在一个方案中,获得路由管理,注册发现,负载均衡,限流,指标监控,分布式追踪等大量功能。

  • go chassis是一个协议中立的开发框架,它不仅支持http,也支持rpc协议,甚至可以集成mysql等中间件的协议。并将它们纳入统一的治理。

  • go chasis支持Istio控制面板,也就是说你可以将它与envoy进行混合使用,只需要使用istio即可,它支持原生的istio配置管理。以此使服务吞吐提升,CPU占用降低。

  • go chassis是插件化设计,支持用户开发定制模块,并接入到框架中

go chassis特性

主要有以下几点:

  • 插件化注册中心: 默认支持Service Center,kubernetes,istio

  • 动态治理框架: 通过此框架,开发者可实现进程运行时配置热加载

  • 插件化协议:  开发者可实现自己的RPC协议,默认实现了 http 和highway(RPC)

  • 熔断降级: 支持根据超时,并发,错误率等进行服务的熔断

  • 容错:支持重试次数等配置,并支持backoff退让重试,

  • 路由管理: 可根据流量权重和Header匹配等配置规则,轻松实现金丝雀发布

  • 客户端负载均衡: 支持定制策略

  • 限流: 支持客户端和服务端限流

  • 插件化Cipher: 支持开发者自定义加解密工具,并应用于AKSK和TLS 证书

  • 处理链: 可支持在通信的过程中加入定制的业务逻辑

  • Metrics: 支持自动导出Prometheus格式的运行时监控数据

  • Tracing: 使用opentracing,支持用户快速对接不同分布式追踪系统

  • Logger:  日志工具支持扩展并下沉到不同存储中

  • 治理: 可通过动态治理框架,在运行时热加载,熔断,负载均衡,路由等配置信息

 

设计目标

  • 最大的灵活性和扩展性

协议是允许开发者灵活扩展的,在通信管道中任意的插入自己的特殊业务逻辑。

  • 易用性

开发者可以用最小化的配置和代码来启动框架,并且框架内部提供友好的API供用户使用,每个模块甚至可以拆开使用,功能任意剪裁。

DELPHI11 利用Android手机实现条码扫描功能 好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。 阅读详情

相关推荐

NXP S32K3 Safety软件生态全解析:RTD、SPD、SAF、SCST到底怎么选?

本文深入解析NXP S32K3系列MCU的安全软件生态,详细对比RTD、SPD、SAF和SCST四大组件的功能定位与选型策略。针对不同ASIL等级需求,提供从架构设计到工程实践的完整解决方案,帮助开发者高效实现功能安全认证,优化汽车电子系统的安全性与可靠性。

weixin_42524226的博客 323

zemax光线光扇图

通过入瞳某一坐标(PX,PY)的光线在像面上有唯一的位置(EX,EY),以EX,EY为纵坐标,以PX,PY为横坐标,分别建立坐标系,把通过入瞳的光线都在坐标系里描点就得到了光扇图。对于视场内任意一点,取其子午面内的光线,以光线在光阑面上的透射点坐标为横坐标,同时以该光线在像面上的坐标为纵坐标,描出所有点,构成的图形即为子午面光扇图。在焦点位置,曲线的斜率为0,也就是说,不管入射时的横坐标(光阑面上的位置)是多少,离轴多远,都将汇聚在焦点处。此时,子午面和弧矢面有不同的分布,两条曲线不重合。

fendoudecheng的博客 8096

unity之——解决利用Jenkins在Windows环境下打包unity工程中的场景为apk包,打包打不出来的问题。并且介绍Jenkins从安装到环境配置,调用unity代码的过程(填坑)!!!!!

今天第一次接触Jenkins,比较头疼。网上的Jenkins配置环境相关的资料比较散乱,并且在Windows平台下相关的配置更是少之又少。我在这里讲一下从Jenkins安装到构建工程。打包unity工程的apk包的过程。 1.首先去Jenkins官网下载安装就不说了,安装完成之后在浏览器中输入http://localhost:8080(默认访问地址)进入Jenkins web界面。进行账号的注册...

cgy56191948的博客 2020

Ubuntu16.04下禁用scp、sftp和winscp

在上一篇博文《Ubuntu16.04 搭建FTP服务器,设置用户权限为只许上传、禁止下载和删除》中,我讲述了Ubuntu16.04下配置FTP,并且设定用户权限为只能上传数据,禁止下载和删除数据。这算在FTP层面封堵了服务器数据泄露的途径。 但是,Ubuntu系统的scp和sftp还是起作用的,理论上只要能用本地机器ping通服务器,就可以用scp和sftp下载数据,这还是存在数据泄露可能的,所...

HPC&Geophysics攻城狮 5735

RV1106G3的fastboot调试

本文详细描述了在幸狐的Luckfox Pico Ultra硬件平台上,使用官方SDK进行系统优化和YOLOv5s模型部署的过程。首先,硬件板卡使用幸狐的SDK进行EMMC非Fastboot配置时功能正常,但Fastboot配置编译失败,通过修改设备树中的ramdisk大小解决了编译问题,但运行时仍报错。幸狐提供的Fastboot烧录文件可正常运行,表明硬件支持Fastboot。随后,使用官方SDK版本rv1106_rv1103_240813进行编译和调试,发现EMMC Fastboot启动失败,通过修改U-

fzktongyong的博客 2354

Isaac Sim/Lab & ROS2 入门教程 —— 宇树人形机器人 H1 强化学习策略部署

本文介绍了如何通过ROS2和IsaacSim运行H1人形机器人的强化学习运动策略。主要内容包括:1)设置机器人关节配置和初始位置;2)添加IMU传感器;3)配置ROS2节点以发布观测数据和接收动作指令;4)创建模拟环境并发布ROS时钟;5)最终运行ROS2策略实现对机器人的键盘控制。文中详细说明了关节参数设置、传感器配置、ROS2节点创建等关键步骤,并提供了注意事项和验证方法。完成配置后,用户可通过键盘指令控制机器人在平坦地形上的运动。

2506_90492529的博客 2169

Pytorch实现之SRGAN+CBAM的结构设计

在SRGAN的残差连接中加入了CBAM注意力机制,同时设计了四类损失来训练。

LJ1147517021的博客 569

3、无限维系统理论中的算子与半群:概念、定理及应用

本博文深入探讨了无限维系统理论中的两个核心概念:里茨谱算子与卢默-菲利普斯定理。文章首先介绍了里茨基的定义与性质,分析了谱、预解集及特征值在无限维系统中的特性,并详细阐述了里茨谱算子的条件及其生成C0-半群的能力,结合阻尼欧拉-伯努利梁模型展示了其应用。随后,文章介绍了卢默-菲利普斯定理及其推论,通过多个偏微分方程实例(如一阶方程、柔性梁、波动方程和扩散问题)说明如何利用该定理判断算子是否生成压缩半群。此外,还强调了状态空间选择和边界条件对系统适定性的重要影响,并总结了相关问题的解决步骤与方法。

flink9streamer的博客 146

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 函数式选项模式编程 Functional Options Pattern in Go
下一篇: Apache ServiceComb Kie----如何管理分布式系统中的配置
二手雄狮
博客等级 码龄11年 6粉丝 4原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值