本文所有打赏将全数捐赠于 NCC(NCC 的资金目前由 倾竹大人 负责管理),请注明捐赠于 NCC。捐赠情况将由倾竹大人在此处公示

提及 .NET 微服务,我们脑海中浮现的一系列印象中,总有 Surging 的踪迹。毫无疑问,尽管我们尚未将之纳入生产环境的技术选型范围,但这个项目我们已经观察了很久,私底下也拿来学习和尝试。对我来说,让我最感动的瞬间是作者那句「给我 2 年时间,我给你一个完整的微服务框架」,如果给他 2 年时间,如果我们继续观察 2 年,2 年后的 Surging 会给我们什么惊喜么?答案欲言未言,就在身边,今天这篇文章目的不在于介绍范亮先生及其 Surging,而在于祝贺范亮先生的 Surging 成为 NCC 的第四个千星项目。感谢他的努力,祝贺他的成绩。

去年年中,范亮先生为大家带来了 Surging,详细介绍了 Surging 的架构思想。Surging 是一个分布式微服务框架,提供高性能 RPC 远程服务调用,采用 Zookeeper、Consul 为服务注册中心,集成了哈希、随机、轮询、压力最小优先作为负载均衡的算法,集成 Netty 框架,使用异步传输。三言两语无法道尽 Surging,所幸在范亮先生的博客中有大量文章介绍 Surging 的各子系统细节和用例,本文不做赘述。

Surging 能带来什么?

  1. 简化的服务调用,通过服务规则的指定,就可以做到服务之间的远程调用,无需其它方式的侵入
  2. 服务自动注册与发现,不需要配置服务提供方地址,注册中心基于ServiceId 或者RoutePath查询服务提供者的地址和元数据,并且能够平滑添加或删除服务提供者。
  3. 软负载均衡及容错机制,通过surging内部负载算法和容错规则的设定,从而达到内部调用的负载和容错
  4. 分布式缓存中间件:通过哈希一致性算法来实现负载,并且有健康检查能够平滑的把不健康的服务从列表中删除
  5. 事件总线:通过对于事件总线的适配可以实现发布订阅交互模式
  6. 容器化持续集成与持续交付 :通过构建一体化Devops平台,实现项目的自动化构建、部署、测试和发布,从而提高生产环境的可靠性、稳定性、弹性和安全性。
  7. 业务模块化驱动引擎,通过加载指定业务模块,能够更加灵活、高效的部署不同版本的业务功能模块

项目:https://github.com/dotnetcore/surging
授权:MIT
文档:https://github.com/dotnetcore/surging/blob/master/docs/README.md
简单示例:https://github.com/dotnetcore/surging/blob/master/docs/docs.en/INDEX.md

作者:Fanliang11(范亮)
GitHub:https://github.com/fanliang11


在 NCC Meetup 2018 Shanghai 活动中,范亮先生为我们介绍了 Surging


Surging 自加入 NCC 起始终坚持不懈的更新、完善,作者发型优美、思路严谨;项目逐渐完整、日趋完善,于 2018 年 6 月底七月初成为 NCC 第四个星数破千的项目,值得祝贺。为此,经 NCC 授权,由 AlexLEWIS 赠送 Surging 作者 Fanliang11 先生图书一本。

将《思维简史》赠予范亮先生。


如果您有项目想加入我们,欢迎来 http://github.com/dotnetcore/home 提请:)

本文所有打赏将全数捐赠于 NCC(NCC 的资金目前由 倾竹大人 负责管理),请注明捐赠于 NCC。捐赠情况将由倾竹大人在此处公示

.NET Core Community 第四个千星项目诞生:微服务框架 Surging的更多相关文章

  1. .NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider

    本文所有打赏将全数捐赠于 NCC(NCC 的资金目前由 倾竹大人 负责管理),请注明捐赠于 NCC.捐赠情况将由倾竹大人在此处公示. DotnetSpider 至力于打造一个轻量化.高效率.易开发.可 ...

  2. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  3. .NET Core Community 首个千星项目诞生:CAP

    项目简介 在我们构建 SOA 或者 微服务系统的过程中,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的最终一致性, CAP 采用的是和当前数据库集成的本地消息表 ...

  4. .NET Core Community 第二个千星项目诞生:Util

    本文所有打赏将全数捐赠于 NCC(NCC 的资金目前由 倾竹大人 负责管理),请注明捐赠于 NCC.捐赠情况将由倾竹大人另行公示. 项目简介 作为一款旨在提升小型团队开发输出能力.提高团队效率.降低项 ...

  5. 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比

    1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...

  6. .net Core 微服务框架 surging 使用

    surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper.Consul作为surging服务的注册中心, 集成了哈希,随机,轮询作为负载均衡的算法,RPC集成采用的 ...

  7. 首次GitHub千星项目提交维护成功 留念

    现在有点激动,可能有混乱的地方.请大家见谅. 一直觉得千星项目,对我来说是一个遥不可及的地方.没想到第一次在GitHub上 提交Pull Request 就成功了,并且是一个千星项目. 虽然 只是提出 ...

  8. MicroService.Core简易微服务框架《一、简介》

    MicroService.Core MicroService.Core 的初衷是为了方便的创建一个微服务, 可作为 Windows Service 或者控制台模式启动. 它底层使用了 OWin 自托管 ...

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

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

随机推荐

  1. split 分割 字符串(分隔符如:* ^ : | , .)

    [1]单个符号作为分隔符 String address="上海|上海市|闵行区|吴中路"; String[] splitAddress=address.split("\\ ...

  2. Django JsonResponse与HttpResponse重要区别

    JsonResponse是HttpResponse的一个子类,是Django提供的用于创建JSON编码类型响应的快捷类.它的默认Content-Type头部设置为application/json,它的 ...

  3. Spark操作HBase报:org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException异常解决方案

    一.异常信息 19/03/21 15:01:52 WARN scheduler.TaskSetManager: Lost task 4.0 in stage 21.0 (TID 14640, hnte ...

  4. eclipse maven web

    在eclipse中用maven创建web项目. 环境配置 C:\Users\xxx>java -versionjava version "1.8.0_121"Java(TM) ...

  5. UUID生成随机字符串

    import java.util.UUID; UUID.randomUUID().toString().replace("-", "") 生成的样子      ...

  6. js data日期初始化的5种方法 [转]

    创建一个日期对象: 复制代码代码如下: var objDate=new Date([arguments list]);  参数形式有以下5种: 1)new Date("month dd,yy ...

  7. 【NOI2018模拟】Yja

    [NOI2018模拟]Yja Description 在平面上找\(n\)个点,要求这 \(n\)个点离原点的距离分别为 \(r1,r2,...,rn\) .最大化这\(n\) 个点构成的凸包面积,凸 ...

  8. Django-rest-framework 接口实现 ModelSerializer 使用

    ModelSerializer 使用 不需要单独写字段的 序列化工具类 相当于 ModelForm 写法:以及 注意事项: 继承 serializers.ModelSerializer 在类中填写 c ...

  9. zabbix全网监控

    为什么要监控 运维的职责1.保障企业数据的安全可靠.2.为客户提供7*24小时服务.3.不断提升用户的体验. 在关键时刻,提前提醒我们服务器要出问题了 当出问题之后,可以便于找到问题的根源 拿到公司服 ...

  10. 自然语言处理之word2vec

    在word2vec出现之前,自然语言处理经常把字词转为one-hot编码类型的词向量,这种方式虽然非常简单易懂,但是数据稀疏性非常高,维度很多,很容易造成维度灾难,尤其是在深度学习中:其次这种词向量中 ...