03. Golang 在隐私计算平台建设中的实践 - 刘敬地位。 国内外纷纷出台了了围绕数据使⽤用和保护的公共政策 2021年年6⽉月10⽇日,《中华⼈人⺠民共和国数据安全法》在⼗十三届全国⼈人⼤大常委会正式颁布。 明确指出坚持安全与发展并重,锁定⽀支持促进数据安全与发展的措施;建⽴立保障政务数 据安全和推动政务数据开放的制度措施。该法⾃自2021年年9⽉月1⽇日起施⾏行行。 2021年年8⽉月20⽇日,⼗十三届全国⼈人⼤大常委会表决通过《个⼈人信息保护法》,规定任何组 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高 同步写法存在问题 算法效率低下 计算逻辑和⽹网络io是串串⾏行行的,不不相关 的计算逻辑和⽹网络io本可以并⾏行行,以 提⾼高效率 算法逻辑和⽹网络逻辑耦合 有⼤大量量的数据序列列化以及异步转同步 的⽹网络流程代码,算法本身不不应该关 注⽹网络相关逻辑 嵌套调⽤用其他算法复杂 在需要调⽤用其他算法时(OT,SS 等),都需要⼿手动编写⼀一遍类似的流 程,嵌套调⽤用逻辑冗余度⽐比较⾼高0 码力 | 37 页 | 6.20 MB | 1 年前3
2-6-Golang 在 Baidu-FrontEnd 的应用-陶春华–C/C++, Java –Python, Ruby • 并发性 –Process, Thread, Event(编程难度) • 开发效率 –语言的描述效率:代码量 –语言的简洁、易用 –库支持 后台程序开发的需求(2) • 大型程序的组织 –数据封装能力 –Namespace • 可测试能力 –单测,覆盖度测量 • 错误检查能力 –编译 –程序异常的trouble shooting 事件驱动的编程模型:编码和调试难度大 • C语言本身的难度和开发效率 –配置管理方式落后 • 为单产品线设计,无法支持平台化要求 • 配置变更(修改、重载、验证)能力差 –变更和稳定性的矛盾 • 程序出core 技术选型:Go vs Nginx • 学习成本 • 开发成本 –并发编程模型:同步(Go) vs 异步(Nginx) –内存管理 –语言描述能力 • 性能 – 在BFE的场景下,性能在可接受范围内 基本思路 –关闭GC –多进程轮流工作 • 单进程状态 –服务态 –等待态 –垃圾回收状态 GC优化 – 多进程配合 技术细节 • 本质上:多个进程监听同一个端口 –高版本linux直接支持 –低版本linux方案 • 父进程Listen • 子进程Accept 技术细节 • 服务态 –调用Accept,获取新的请求 • 等待态 –不调用Accept,已经连接的client,可以继续收发0 码力 | 35 页 | 730.17 KB | 1 年前3
大规模高性能区块链架构设计模式与测试框架-李世敬能 特 性 分区机制 业务分区而治 • 通过Namespace进行业务划分 • 业务数据对其他分区不可见 分区性能优异 运维灵活便捷 • 单次部署节点、灵活配置分区,降低运维成本 • 支持分区及分区成员的动态管理,快速适应业 务场景变化 • 不同分区交易并行执行,分区性能不随分区 数据增加而下降 分区机制 节点1 节点2 节点3 节点4 节点5 节点6 分区B 分区A 数据部分 句柄管理组件 ... ... Filelog存储引擎 持久化层 Multicache存储引擎 内存层 memory-table write-ahead log ... ... 异步写入 0802 0803 0804 leveldb leveldb leveldb 只读 读写 元数据 索引数据 区块数据库 索引数据库 区块链平台底层采用Filelog+IndexDB 分片模型 大规模组网 异步审计 扩展层 • Hyperchain:首个国产自主可控的联盟链平 台,是目前行业内落地应用最多、节点分布 最广、承载业务规模最大的区块链平台。 • BitXMesh:首个支持链上链下协同的数据共 享平台,实现“数据可用不可见”。 • BitXHub: 首个异构联盟链跨链平台,是目 前国内影响力最大的开源跨链平台。 • Azolla: 首个支持海量设备接入的多层级0 码力 | 39 页 | 56.58 MB | 1 年前3
基于amqp实现的golang消息队列MaxQhttp://192.168.10.11:3999/maxq.slide#1 15/22 扩展性 HA、Exchange和Queue动态扩展属性参数 Exchange、Binding、Queue支持自定义扩展, 如:x-message-ttl、x-expires、x-max- length、x-dead-letter-exchange 7/1/2017 基于amqp实现的golang消息队列MaxQ 基于amqp实现的golang消息队列MaxQ http://192.168.10.11:3999/maxq.slide#1 17/22 6. 使用场景和案例 异步解耦 订单系统与消息通知系统解耦 1.用户订单支付成功,直接向MaxQ推送下单成功通知,主流程迅速返回 2.消息通知系统异步接收通知消息, 发送短信通知或应用通知 7/1/2017 基于amqp实现的golang消息队列MaxQ http://192.1680 码力 | 22 页 | 1.45 MB | 1 年前3
用Go语言实现推送服务器推送服务器要求 • 高并发 • 可靠性 • 高性能 • 支持水平扩展 • 无单点故障 Go语言特性 • 静态的、编译的 • 自动内存回收 • 命令式编程 • 函数可以作为值 • 面向并发 • 内置RPC支持 推送服务器要求的应对 • 高并发 – goroutine • 可靠性 – 使用Redis暂存消息 • 高性能 – 静态编译语言 • 支持水平扩展 – 使用RPC组成集群 • 无单点故障 GOMAXPROCS(runtime.NumCPU()) • 使用“go”命令创建goroutine go sockstore.Start() • goroutine使用channel交换消息 – 异步场景,直接往指定channel发送数据 – 同步场景,往channel发送的数据中,包含一 个获取返回值的channel 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 上线效果 比较 .net push server Go push server 操作系统 Windows server CentOS Linux 服务器数量(同配置) 16 8 单台服务器支持连接数 20万 80万 Cpu平均占用 10%到30%,波动频繁 稳定在5% 运维需求 使用脚本每天重启一次 稳定运行数月未崩溃 Q&A Thanks 陈叶皓 chen.yh@ctrip.com0 码力 | 25 页 | 260.04 KB | 1 年前3
2.7 Golang与高性能DSP竞价系统2/2635261.html 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • ⾼高性能、天⽣生并发⽀支持 • 性能敏感的模块可以直接使⽤用C编写(当时是这么认为的) • 编译为本地机器码,部署⽅方便 • 快速上⼿手,学习成本低 • 标准库基本够⽤用 • 带GC(当时不了解GC的性能问题) 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 取消Redis的主从同步 • 写主Redis时,同时写⼀一份到NSQ,异步写⼊入其他机房 • 使⽤用SoftLayer的⾹香港云主机作为中转(why?) Redis跨机房同步 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll ReservedAll Right Reserved • 性能不⽐比Redis差 • SSD优化 • 完备的分布式集群 • ⼆二级索引 • 开源,企业版⽀支持跨机房的集群 • 99%的请求1ms响应 • ⽀支持的数据结构类型偏简单 CookieMapping: Aerospike 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll0 码力 | 51 页 | 5.09 MB | 1 年前3
Go 入门指南(The way to Go)语言版本来说有小部分内容相对过时,但是为当下不可多得的好书,相关内容已获得作者同意根 据当前 Go 语言版本进行修改而不作出特别声明。 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! 14.9 实现 Futures 模式 如果你喜欢本书 《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,具体请联系【无闻 E-mail: u#gogs.io】,一同完善本书并帮助壮大 本书原作者:Ivo Balbaert 参与翻译人员: @zhanming themorecolor @everyx @chidouhu @spawnris 《Go入门指南》 翻译进度 支持本书 交流社区 新人守则 致谢 阅前必读 - 8 - 本文档使用 书栈(BookStack.CN) 构建 @domainname @leisore @dake @glight2000 的语法和晦涩难懂的概念 来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提倡通过接口来针对面向 对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你在学习 Go 语言之前需要具备一些关于编程的基础知识和经验,并且拥有合适的学习环境,但你并不需要对0 码力 | 466 页 | 4.44 MB | 1 年前3
2.2.6 字节跳动在 Go 网络库上的实践epoll_wait() func conns... var input buffer var output buffer go handle() 优化 Buffer 设计 – 需求分析 conn 支持流式读写 output buffer Decode req conn fd goroutine 1 (poller ...) goroutine 2 (go handle ...) Encode }() multisyscall.read(i=[0,n]) add all poller go handle() go handle() go handle() io_uring – 异步调用 gopool go func() { uring := io_uring_setup(...) for { n, _ := io_uring_enter(fd, submit0 码力 | 42 页 | 3.19 MB | 1 年前3
5.cgo 原理解析及优化实践crosscall2 是手写 Plan9 的汇编函数 • 兼容性处理:十来个 CPU,好几个 OS • 搞懂混合编译:Go,ASM ,C dropm 的判断条件 1. 有些操作系统,比如 Windows,不支持 pthread 来注册 destructor 2. pthread_key_create 执行成功才跳过 ① C 申明变量 & 赋值 ② Go 申明 import ③ ASM 中可以直接使用 用完之后需要 Unpin Go 1.22 之后使用才安全 性能中等 ③ 分开传参 性能最好 GODEBUG=cgocheck=0 Tips ① 导出的 Go 函数轻量级,不要有网络等异步操作,会阻塞 C 线程 ② C 传参给 Go,很友好 ③ Go 传参给 C,不友好 ④ 如果有 C 调 Go,推荐 Go 1.21 ⑤ runtime.Pinner(Go 1.22) ⑥ #cgo0 码力 | 45 页 | 5.74 MB | 1 年前3
Go 入门指南(The way to Go)的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你 在学习 Go 语言之前需要具备一些关于编程的基础知识和经验,并且拥有合适的学习环境,但你并不需要 解决的问题的同时,让我的工作变得更加高效。我并不是说 C++ 的存在是一个错误,相反地,我认 为这是历史发展的必然结果。当我深陷在 C 语言这门略微比汇编语言好一点的泥潭时,我坚信任何语言的 构造都不可能支持大型项目的开发。像垃圾回收或并发语言支持这类东西,在当时都是极其荒谬的主意, 根本没有人在乎。C++ 向大型项目开发迈出了重要的第一步,带领我们走进这个广袤无垠的世界。很庆幸 Stroustrup 做了让 C++ 兼容 10 日,谷歌开始抽调员工进入全职 开发 Go 语言项目。开源化的语言显然能够让更多的开发者参与其中并加速它的发展速度。Andrew Gerrand 在 2010 年加入到开发团队中成为共同开发者与支持者。 在 Go 语言在 2010 年 1 月 8 日被 Tiobe(闻名于它的编程语言流行程度排名)宣布为 “2009 年年度语 言” 后,引起各界很大的反响。目前 Go 语言在这项排名中的最高记录是在0 码力 | 380 页 | 2.97 MB | 1 年前3
共 67 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7













