Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

开源最前线(ID:OpenSourceTop) 猿妹整编

综合自:https://github.com/sogou/srpc、https://github.com/sogou/workflow

前不久,搜狗正式宣布开源了一个C++服务器引擎——workflow

搜狗公司C++服务器引擎,支撑搜狗几乎所有后端C++在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理超百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数C++后端开发需求。

目前,Workflow在Github上标星2.8K,累计分支560(Github地址:https://github.com/sogou/workflow)

Sogou C++ Workflow在设计之初,就秉持着高性能与轻量级两个核心理念。长久以来,业界中优化服务器性能都主要专注于如何跑满cpu、如何单独地让网络请求极速响应等方面。而此次上线的搜狗Workflow则更专注于如何让各种网络资源被具体的调度器管理,使其尽可能地全部调度起来。

另一方面,对多通信计算资源融为一体的解决方案,进一步提升了Workflow引擎的性能。

此项目最大的亮点可能是创新性引入了任务流的概念,Sogou C++ Workflow将资源高度封装,用户再也接触不到连接池、线程池,包括想要做 aio 时的文件 fd与各种异步通知机制。这就意味着,在开发阶段开发人员仅仅需要了解业务关系而不用关心内部细节,帮助开发者们实现自己复杂的业务逻辑。

功能特性

你可以将Workflow用于快速搭建http服务器:

#include <stdio.h>
#include "workflow/WFHttpServer.h"int main()
{WFHttpServer server([](WFHttpTask *task) {task->get_resp()->append_output_body("<html>Hello World!</html>");});if (server.start(8888) == 0) {  // start server on port 8888getchar(); // press "Enter" to end.server.stop();}return 0;
}
  • 作为万能异步客户端。目前支持http,redis,mysql和kafka协议。

  • 实现自定义协议client/server,构建自己的RPC系统。srpc就是以它为基础,作为独立项目开源。支持srpc,brpc和thrift等协议。

  • 构建异步任务流,支持常用的串并联,也支持更加复杂的DAG结构。

  • 作为并行编程工具使用。除了网络任务,我们也包含计算任务的调度。所有类型的任务都可以放入同一个流中。

  • 在Linux系统下作为文件异步IO工具使用,性能超过任何标准调用。磁盘IO也是一种任务。

  • 实现任何计算与通讯关系非常复杂的高性能高并发的后端服务。

  • 构建服务网格(service mesh)系统。项目内置服务治理与负载均衡等功能。

在Github上,搜狗还贴心给出了大量的workflow示例,具体如下:

此外,开源workflow几个月后,,搜狗又宣布开源workflow的生态项目——srpc,这是一个基于workflow 打造的轻量级RPC框架。

srpc内部实现层次精巧,非常注重纵向层次拆分和横向解耦。其中压缩层、序列化层、协议层是互相解耦的,利用函数重载、派生子类实现父类接口和模版特化等多种多态方式,来实现内部使用同一套代码的高度复用。后续架构升级或者用户进行二次开发,无论是中间再加一层、还是某层内横向添加一种内容,都不需要改动现有的代码,十分方便。(Github地址:https://github.com/sogou/srpc)

搜狗方面表示,目前,srpc已在搜狗搜索和搜狐集团团队中多个线上业务中稳定使用了一段时间。由于接口简介易上手,且直接打通workflow的任务流、计算调度、服务治理等功能,其对开发效率有了非常大的提升。

不知道你对搜狗这两大开源神器感兴趣么?

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:  

 程序员买房前后对比,看完后已哭瞎...

 内部泄露版!互联网大厂的薪资和职级一览

 Google 出品的 Java 编码规范

 Python编程 高阶函数使用技巧

在看点这里好文分享给更多人↓↓

搜狗又有两大开源力作!你一个也不知道?相关推荐

  1. 两大开源硬件之树莓派与a_开源硬件之美

    两大开源硬件之树莓派与a Alicia Gibb现在是开放式硬件的代名词. 她去了图书馆学校,在那里他们教她信息自由和获取自由是最重要的. 从那时起,她就爱上了"开源",并最终通过 ...

  2. 开源飞控初探(三)两大开源飞控的历史

    飞控领域的一些术语有历史渊源,了解两大开源飞控的历史可帮助理清这些术语之间的联系和不同场景下的具体意义.有所省略,只摘录有参考价值的内容. 1.PX4和Pixhawk的历史 2008年源于Lorenz ...

  3. 比较PostgreSQL与MySQL两大开源关系数据库管理系统

    MySQL 和 PostgreSQL 是两大开源关系数据库管理系统 (RDBMS),长期以来被证明具有高度的可靠性和可扩展性,在本文中,我们将探讨 PostgreSQL 与 MySQL,以及它们之间的 ...

  4. Spring Security和 JWT两大利器来打造一个简易的权限系统。

    写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求.在Java EE领域,成熟的安全框架解决方案一般有 A ...

  5. 两大开源平台、九个捐赠项目,走进百度开源的2020

    点击左上方蓝字关注我们 导读 "从 2009 年大规模定制 Hadoop 到 2013 年第一个前端可视化产品 ECharts率先开源,再到2016年和2017年分别正式对外开源飞桨(Pad ...

  6. 两大开源平台、九个基金会项目,走进百度开源的2020

    "从 2009 年大规模定制 Hadoop 到 2013 年第一个前端可视化产品 ECharts率先开源,再到2016年和2017年分别正式对外开源飞桨(PaddlePaddle).Apol ...

  7. 两大开源游戏引擎Cocos2d-x及OGEngine对比分析

    在近期的全球移动开发者大会上,触控发布了Cocos 3D引擎:而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣布将支持跨平台. Cocos2d-x和OGEngine都是当前比较受开发 ...

  8. 国内流行的两大开源.net微信公众平台SDK对比分析

    最近忙于微信周边的开发 难免手痒去搜索一下有没有相关的sdk直接拿来使 还真发现了不少 这里总结两个看起来比较不错的.net平台下基于C#语言开发的SDK 一个强大一个小巧 (1) Senparc.W ...

  9. 腾讯向开放原子开源基金会捐赠TencentOS tiny、TKEStack两大项目!

    10月15日,腾讯正式宣布,将旗下两大开源项目--轻量级物联网实时操作系统TencentOS tiny和企业级容器编排引擎TKEStack(均待更名)捐赠给开放原子开源基金会.未来这两个项目将在基金会 ...

最新文章

  1. 面试官:磁盘 IO 变高,你怎么分析?
  2. 号外号外 你和python大牛的差距有多少?
  3. XHProf的安装和使用(PHP性能测试神器)
  4. python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...
  5. 天池-新闻推荐-数据分析
  6. datetimepicker中文不生效_Python reStructuredText 帮助文件中文乱码
  7. python menu实例_python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例...
  8. C#中网络编程异步操作方法与 粘包和分包问题
  9. py-R-FCN安装记录
  10. 上位机软件与西门子PLC
  11. 共模电感适用的频率_共模电感的原理以及使用情况
  12. MTSP遗传算法解决
  13. PTA 7-18 新浪微博热门话题
  14. 网页动画的12原则,帮你做出漂亮的动画效果
  15. 2个路由器串联做交换机共享网络的方法
  16. Windows无法连接到无线网络
  17. poj2706 connect
  18. JS面试须知--字符串对象
  19. 大都会人寿三周的工作回顾
  20. 浅谈python(我心目中的python)

热门文章

  1. 艾司博讯:拼多多退款申请平台介入流程
  2. (旧)子数涵数·PS ——素描效果
  3. 身份验证协议和java安全框架
  4. 这样的用户体验,是设计错误,还是我孤陋寡闻,问问中行?
  5. 22-玩转RGB七彩灯条、灯带、灯环 | Mixly技巧系列
  6. 涨停之后第二天第三天会怎么样
  7. 一体化伺服电机在全自动模板缝纫机上的应用
  8. 用Java输出兔子图形,如何画出可爱的兔子?那你看看这个!
  9. 《如何白手起家挣到一百万?》学习笔记
  10. 小小输入法的自定义码表(兼容拼音郑码)