2016年发布了.NET Core第一个正式版本,而.NET5也将在下个月就正式来临了,技术日新月异,也有点让人应接不暇。在框架设计上,.NET Framework的全家桶理念,培养了一大批的CRUD,而.NET Core转变成了按需使用(Pay for what you use),对.NET开发者提出了更高的要求,不仅得知道怎么用,还得知道为什么!

搞技术的,就该有刨根问底的精神。本人自研的微服务框架在各位大佬的帮助下总算迎来了首次线上公开分享,想招募几个队友一起干,先来说说这个自研项目!

文:WenLiang

来源:DotNetdaily

自研服务注册发现

微服务架构通常都有几十上百个服务实例,每个服务实例追求功能单一,极简设计,为保障服务的可用性和伸缩能力,集群是必须的,服务注册发现也是必须的了。当下主流的服务注册发现组件很多,Zookeeper、Consul、ETCD、Eurake都是可选项,本着探究和折腾精神,下面基于Redis封装了一个ZXAgility.Microservice.RDiscovery

01

服务注册发现的核心是注册--发现,说到底就是个数据快速存取,Redis非常擅长。服务注册就是写入服务的基本信息到Redis,服务发现就是从Redis读取服务的基本信息,Done!

02

心跳检查和移除也是必备功能,Redis没办法主动发起心跳,于是乎转换个思路,要求服务实例来心跳,定期更新Redis信息,否则就过期移除了,Done!

03

共享数据存储、分布式锁、集群数据同步等等功能,恰好就是Redis自己擅长的,Done!

以上是设计实例 

具体实现代码和流程见文章底部

自研微服务网关

网关在微服务架构里面也是必须环节,能屏蔽保护底层的服务实例,还能完成各种缓存、超时、限流、熔断、降级等服务治理,还能结合IdentityServer4授权中心做集中鉴权授权,也是整个微服务架构后台流程的入口和起点,重中之重!.NET Core可选的网关组件主要是Ocelot和Kong,但是二者在性能上都有瓶颈,于是乎又来了一波封装,ZXAgility.Microservice.RGateway:

01

网关的核心是路由映射,请求转发,结果回发,这里用ASP.NET Core中间件模式做了个极简的请求转发,去除了多个无用环节。

02

服务治理上,目前已实现的包括基于Redis分布式缓存、基于Polly封装的超时熔断重试、以及用Redis令牌桶的形式实现了限流。

此外还提供了JWT验证、配置文件以及HttpApi对配置文件管理等,网关常见功能大都实现了,压测了下,性能比Ocelot能高50%。

自研微服务网关

APM全链路追踪在微服务架构里也属于必备组件了,因为服务多、节点多、机器多,一旦出个问题,几乎是没办法去定位的,再就是服务节点的各种性能指标统计,都要求全链路追踪,能实时统计出请求的全链路,包括调用的参数、结果、发起时间、结束时间等各种信息数据。当下.NET Core没有成熟全链路工具,能选用的skywalking也是为Java而生的,.NET Core至今还不能用最新版本,限制很多。这里基于.NET Core封装了一个ZXAgility.Microservice.RFullAPM:

01

独立的数据收集中心,这里用Kafka来做的数据收集中间件,满足海量吞吐低延迟的需求。

02

网关、实例全节点埋点和整个链路数据整理,通过.NET Core提供的AsyncLocal的中间件结合完成,保证高比发下单次请求保证使用同一个RequestID,识别请求链路。

03

在数据展示上,对接的Kibana提供的各种报表和查询图像展示,还可以无痕的对接业务报表系统,支持定制。

链路追踪还有很多个性化的需求,

项目还在陆续完善,欢迎大家一起共建!

期待你的加入

微服务架构当下已经是成熟的架构体系,以上仅分享了服务注册发现、网关、全链路追踪,此外还有配置中心、分布式日志分析等诸多技术点。本文未展开讲的完整内容,今晚将进行线上成功展示。应用以上组件搭建微服务实战,并用Docker部署集群,最后用JMeter压测整个项目做验证!

作为项目发起人,对大家的加入万分期待!欢迎加入自研团队,共同开发,一起建设.Net开源生态!

提示:

凡参与本次线上分享会的小伙伴,期间生成的代码、已有的经验笔记等,都会分享给大家,扫码添加工作人员,可免费领取!

自研团队期待你的加入

自研微服务框架成果展示

时间:10月2日晚8点

参与:扫码获取直播链接

拥抱.NET 5,从自研微服务框架开始相关推荐

  1. 企业级微服务框架落地

    根据康威定律,当互联网公司业务和团队发展到一定规模,微服务架构是一种必然的演化趋势.我们看看唯品会对微服务框架体系的建设及实践. 先来看一下唯品会微服务基础中台架构的设计思路.围绕微服务,唯品会自主研 ...

  2. Go微服务框架及基础平台选择

    Go微服务框架及基础平台选择 1 考虑因素 2 现有Go微服务框架 2.1 istio 2.1.1 Istio 特点 2.2 Go-kit 2.2.1 暂未找到 2.3 Kratos(奎托斯) 2.3 ...

  3. 腾讯微服务框架TSF简介

    腾讯微服务平台 (Tencent Service Framework,TSF) 是一个围绕着应用和微服务的 PaaS 平台,提供应用全生命周期管理.数据化运营.立体化监控和服务治理等功能.TSF 拥抱 ...

  4. 好未来晓黑板go-zero微服务框架: 你不需要懂微服务,懂业务就行

    go-zero 0. go-zero介绍 go-zero是一个集成了各种工程实践的web和rpc框架.通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验. go-zero 包含极简的 API ...

  5. 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面 开源微服务框架 Apache ServiceComb 的前身为华为云的 微服务引擎 CSE (Cloud Servi ...

  6. go-zero:微服务框架

    go-zero 是一个集成了各种工程实践的 Web 和 rpc 框架,它的弹性设计保障了大并发服务端的稳定性,并且已经经过了充分的实战检验. go-zero 在设计时遵循了 "工具大于约定和 ...

  7. go-zero:开箱即用的微服务框架

    go-zero 是一个集成了各种工程实践的 Web 和 rpc 框架,它的弹性设计保障了大并发服务端的稳定性,并且已经经过了充分的实战检验. go-zero 在设计时遵循了 "工具大于约定和 ...

  8. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中谈谈surging Api 网关 开源地址:https://gith ...

  9. 基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级

    1.前言 surging受到不少.net同学的青睐,也提了不少问题,提的最多的是什么时候集成API 网关,在这里回答大家最近已经开始着手研发,应该在1,2个月内会有个初版API网关,其它像Token身 ...

最新文章

  1. pickle,json ;random,shelve
  2. 微信小程序如何让获取view的高度
  3. mac使用被动ftp模式(pasv)_网络安全工程师与白帽子黑客教你:Kali Linux之使用Metasploit进行FTP服务扫描实战...
  4. ashx误删后,未能创建类型
  5. 一个合格的web前端程序员要学会哪些技能?
  6. v-if 表单验证_避免许多if块进行验证检查
  7. 西宁a货翡翠,孝感a货翡翠
  8. java docx 内存溢出_第2章 Java内存区域与内存溢出异常
  9. Android View.onMeasure方法的理解
  10. CentOS 7.2下编译安装PHP 7
  11. Java 理论与实践: 您的小数点到哪里去了?
  12. python简单爬虫获取行政边界点坐标
  13. 记录一次生产环境偶发HTTP响应406报错问题
  14. Win10如何把D盘空间分给C盘|Win10硬盘分成多个分区
  15. Android编程权威指南第三版 第32章
  16. 如何编写一个投票功能的智能合约
  17. win8无权限访问这台计算机,win8电脑IPv4显示无internet访问权限的解决方法
  18. ASP.NET统计在线人数
  19. Webots平台下NAO机器人仿真环境的搭建
  20. 基于python的网上订餐系统论文模板

热门文章

  1. C#控件绑定数据源方式
  2. Oracle笔记 三、function 、select
  3. Android -- 创建XML文件对象及其序列化, pull解析XML文件
  4. shared_ptrT make_shared( Args ... args );
  5. hdu 1863(最小生成树kruskal)
  6. jquery 使用方法
  7. linux系统启动流程及常见问题的解决
  8. Linux+Oracle+12c+RAC+安装配置详细-GI安装
  9. JavaScript格式化数字显示格式
  10. Ansible 一步一步从入门到精通(一)