本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议.第二部分会给出smss项目的协议设计规范和源码讲解. 一.Protobuf使用基础 什么是protobuf protobuf是谷歌研发的一种数据序列化和存储技术.主要可以用来解决网络通讯中异构系统的通讯和数据持久化,与同类技术相比(JSON或XML),官方宣称的数据量长度减少3~10倍,运算速度20~100倍.由于与平台无关,因此非常适合使用在多系统的交互中. 目前常见的使用版本是2和3,个人推荐如果你打算在项…
Protobuf应用广泛,尤其作为网络通讯协议最为普遍.本文将详细描述几个让人眼前一亮的protobuf协议设计,对准备应用或已经应用protobuf的开发者会有所启发,甚至可以直接拿过去用. 这里描述的协议设计被用于生产环境的即时通讯.埋点数据采集.消息推送.redis和mysql数据代理.   Bwar从2013年开始应用protobuf,2014年设计了用于mysql数据代理的protobuf协议,2015年设计了用于即时通讯的protobuf协议.高性能C++ IoC网络框架Nebula…
本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵盖了在Ubuntu系统上利用OpenSSL和Libevent如何创建一个支持SSL的服务端.文章中介绍的知识点并未全部在SMSS项目中实现,因此笔者会列出所有相关源码以方便读者查阅.提醒:由于知识点较多,分享涵盖了多种语言.预计的学习时间可能会大于3小时,为了保证读者能有良好的学习体验,继续前请先安…
继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘钥文件,但是有时候我们需要将配套的秘钥以及证书让多个模块来使用,他们很可能是由不同语言开发.在这样的情形下,我们通常会选择openssl. 生成服务端的秘钥文件 openssl genrsa -out server.key 2048 这个秘钥文件是经过Base64编码后生成的,你可以使用文本工具打开…
libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服务和注册连接事件 libevent是一个基于事件驱动的网络库,通过在一个事件循环上注册不同的事件以完成线程多路复用.由于libevent采用c语言开发,为了使用方便我们可以将它的功能通过面向对象的设计模式用c++来封装.下面是对常用函数的详细介绍: (1)event_base_new():创建(初始…
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open-source-projects  . 欢迎fork, star , watch, 提issue. 资料参考来源:http://studygolang.com/projects 监控系统 序号 名称 项目地址 简介 1 OpenFalcon http://github.com/open-falcon/…
9月7日.8日,2018  ODF 开源数据库论坛,在北京盛大开幕.在大会上,巨杉数据库正式发布了巨杉全新的MySQL/MariaDB兼容架构,并将项目正式开源. 开源数据库论坛(ODF)是中国开源数据库垂直领域的顶级峰会,旨在建立一个平台,以促进开源数据库产品发展和技术交流,帮助越来越多的企业了解和使用开源数据库. 在大会主论坛中,巨杉数据库联合创始人 & CTO王涛,介绍了SequoiaDB 3.0 对于MySQL兼容的机构以及兼容工具SequoiaSQL,同时也正式宣布SequoiaSQL…
在开源OSS.Social微信项目解析的随笔中,我简单给大家分享了进行中微信项目的概要设计,主要在讲述解决思路和过程,没有详细实现和使用介绍.本着不能马虎的态度,这篇文章我来给大家分解一下项目结构,使用方式以及后边的规划,希望能够让大家通达晓畅.同时,当前项目正在进行 .Net Standard 类库的过渡,相信一段时间之后就可以同时对 .net framework 和 .net core 提供支持. 这个项目是整个OSS系列开源项目之一,主要是对 社交化产品的接口包装,而微信项目是当前正在进行…
2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度上预示着业界的最新流行趋势. 可以看到,前十名中有九个是国内开发者开发的开源项目,这个比例相比于去年已大大提高. 此外,榜单中的项目已经过筛选,均符合国际 OSI 批准的开源协议. 值得注意的是,今年关于人工智能的项目明显增加了不少,无论是 PHP.JavaScript 还是其他语言都诞生了相关的人…
传统友商ERP的交付过程 一.先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行所谓的EXECL的模拟报价,一切东西看不到只念王八经,没问题肯定能做到.客户最多只能看到所谓的售前工程师在本机给你展示的东西,永远无法在付费前体验到友商ERP的所有功能. 二.经过所谓的深入调研,形成所谓客户方不明白,友商明白的SOW文档需求 根据友商的资质不同,所出的SOW也是不同的,有质量高的,…