• sproto rpc 的用法
    sproto 是我自己设计, 用在我们新项目中取代过去用到的 google protocol buffers 的东西。 为什么不用 protobuf ? 这个问题我有足够的发言权。在 lua 语言为主的项目中,sproto 更合适。google 官方并没有给 protobuf 加入 lua 支持。现在在网上流传的 protobuf lua 方案,被人用的最多的两种,一个是 pbc 的 lua binding ,另一个是 protoc-gen-...
  • 开发笔记 (6) : 结构化数据的共享存储
    开始这个话题前,离上篇开发笔记已经有一周多了。我是打算一直把开发笔记写下去的,而开发过程中一定不会一帆风顺,各种技术的抉择,放弃,都可能有反复。公开记录这个历程,即是对思路的持久化,又是一种自我督促。不轻易陷入到技术细节中而丢失了产品开发进度。而且有一天,当我们的项目完成了后,我可以对所有人说,看,我们的东西就是这样一步步做出来的。每个点滴都凝聚了叫得上名字的开发人员这么多个月的心血。 技术方案的争议在我们几个人内部是很激烈的。让自己的想法说服...
  • pbc 库的 lua binding
    前几天写的 pbc 初衷就是想可以方便的 binding 到动态语言中去用的。所以今天花了整整一天自己写了个简单的 lua binding 库,就是很自然的工作了。 写完了之后,我很好奇性能怎样,就写了一个非常简单的测试程序测了一下。当然这个测试不说明很多问题,因为测试用的数据实在是太简单了,等明天有空再弄个复杂点的来跑一下吧。我很奇怪,为什么 google 官方的 C++ 版性能这么差。 我的 lua 测试代码大约是这样的: local ...
  • Protocol Buffers for C
    我一直不太满意 google protocol buffers 的默认设计。为每个 message type 生成一大坨 C++ 代码让我很难受。而且官方没有提供 C 版本,第三方的 C 版本 也不让我满意。 这种设计很难让人做动态语言的 binding ,而大多数动态语言往往又没有强类型检查,采用生成代码的方式并没有特别的好处,反而有很大的性能损失(和通常做一个 bingding 库的方式比较)。比如官方的 Python 库,完全可以在运行时...
  • 继续完善 protobuf 库
    又仔细推敲了两天,把 lua 版的 protobuf 库完善了一下。主要是做了两个工作: protobuf 本身的格式,google 是自描述的。定义为 google.protobuf.descriptor 。我先自己实现的 parser 图方便,用了自己的中间交换格式。为了日后更通用,稍微修改了一下,可以生成于官方相同的结构。解析的性能稍有下降,不过应该兼容性更好。 一开始实现的 api 虽然性能非常好。(经简单测试,是 python 库的...
  • [译]用GoLang实现微服务(一)
    导言 在本文中,我们将了解一些基础的概念,术语。同时将创建我们的第一个微服务,尽管它会非常简陋。 在接下来的文章中,我们会陆续创建以下微服务: consignments (货运) inventory (仓库) users (用户) authentication (认证) roles (角色) vessels (货船) 完整的技术栈如下:golang, mongodb, grpc, docker, Google Cloud, Kubernetes, NATS, CircleCI, Terrafrom ...
  • [译]用GoLang实现微服务(三)
    此系列文章介绍如何用 GoLang 实践微服务, 分十篇。此为其三。 原著作者:Ewan Valentine 原文连接:https://ewanvalentine.io/microservices-in-golang-part-3/ 友情提示:系列文章的后五篇翻译请移步至wuYin’s blog 初稿 -> 润色 在上一篇文章中, 我们了解了go-micro 以及 Docker的基础。同时引入了我们的第二个微服务,货船服务(vessel-service)。那么在此文中,我们将要了解一下 docke...
  • SpringBoot 集成 Protocol Buffer案例
    Hello,大家好,我是子悠,作为本周的小编之前已经跟大家介绍过自己了,今天就让我们跟着子悠(一个有点文艺有点技术宅的深漂程序员,是我是我就是我)的步伐学习新知识吧。下面是正文背景最近工作中使用到 Protobuf,发现 Protobuf 的强大和方便之处,今天给大家介绍一个这个强大的工具的使用。毕竟有好东西要一起分享。什么是 Protobuf首先我们来看下什么是 protobuf, 官方解释:Protocol buffers are Google’s language-neutral, platform-...
  • 比 json 快5倍的 protobuf,了解一下!
    之前在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,而在最近的开发中接触到了 Google 的 ProtoBuf。在查阅相关资料学习 ProtoBuf 以及研读其源码之后,发现其在效率、兼容性等方面非常出色。在以后的项目技术选型中,尤其是网络通信、通用数据交换等场景应该会优先选择 ProtoBuf。自己在学习 ProtoBuf 的过程中翻译了官方的主要文档,一来当然是在学习 ProtoBuf,二来是培养阅读英文文档的能力,三来是因为 Google 的文档?不存在的!看完这些文档对...
  • 花椒服务端 gRPC 开发实践
    奇技指南gRPC是一个高性能、通用的开源 RPC 框架,由 Google 开发并基于 HTTP/2 协议标准而设计。本文介绍花椒服务端的 gRPC 开发实践。为了让客户端更专注业务实现,降低接口联调测试成本,我们选用了 gRPC 方案。在服务端,服务实现这个接口并且运行 gRPC 服务处理客户端调用。gRPC特点基于标准化的 IDL来生成服务器端和客户端代码,支持多种主流开发语言。因此在这次项目中前端未使用 gRPC 服务,而是由 gRPC-Gateway 提供代理的 RESTful 接口。gRPC-Gatewaygrpc-gateway 是 protoc 的一个插件,它能读取 gRPC 的服务定义并生成反向代理服务器,将 RESTful 的 JSON 请求转换为 gRPC 的方式。
  • TiDB Binlog 源码阅读系列文章(四)Pump server 介绍
    在上篇文章中,我们介绍了 TiDB 如何通过 Pump client 将 binlog 发往 Pump,本文将继续介绍 Pump server 的实现,对应的源码主要集中在 TiDB Binlog 仓库的 pump/server.go 文件中。为了避免丢失 binlog,在开始对外提供 binlog 写入服务之前,它会将当前 Server 注册到 PD 上,确保所有运行中的 Drainer 都已经观察到新增的 Pump 节点。WriteBinlog顾名思义,这是用于写入 binlog 的接口,上篇文章中 Pump client 调用的就是这个接口。storage.WriteBinlog将 binlog 持久化存储,并对 binlog 按start TS/commit TS进行排序,详细的实现将在下章展开讨论。PullBinlogsPullBinlogs 是为 Drainer 提供的接口,用于按顺序获取 binlog。
官方公众号
活跃用户
作者:小乐,这里有技术、心得、算法、职场、感悟、面经,做一个有趣的帮助程序员成长的公众号,每天8点20分,第一时间与你相约。
十年经验的资深架构师,著有两本业界知名的技术畅销书,多个知名技术大会的特邀演讲嘉宾。这里不仅分享大前端、Java、跨平台等技术,还有职场和程序员成长类文章。
每天分享成长干货,路虽远,行则必至
发现、挖掘与推荐、传播优秀的安全技术、产品,提升安全领域在全行业的价值,了解机构与企业的安全需求,一家真正懂安全的专业咨询机构,我们是安全牛!
一个专注侃侃计算机视觉方向的公众号。计算机视觉、图像处理、机器学习、深度学习、C/C++、Python、诗和远方等。
分享项目实践,洞察前沿架构,聚焦云计算、微服务、大数据、超融合、软件定义、数据保护、人工智能、行业实践和解决方案。
一个有情怀的公众号。机器学习、自然语言处理、算法等知识集中营、期待与你相遇~
开源软件,改变世界!关注即赠送百G千元网课教程。