个推微服务实践
Api�� OpenResty�Nginx+Lua� ��Nginx����������Lua�� ����������web�� ����� HTTP REST�JSON ��������������� ����� HTTP REST�JSON����� ��������������� ���� ZK������ ������������� ���� Lua�Node.js�Java ������������������ OpenResty���� � Nginx � Lua ���� Web ���������� ���� Lua ������ ������������ ������������ ����������� Web ���Web ����� ��� ������� LVS+HaProxy API���OpenResty (Nginx+Lua) OpenResty (Nginx+Lua) PM2 Node.js js Jetty Java OpenResty (Nginx+Lua) PM2 Node.js Jetty Java ������� ZooKeeper � etcd/consul ���� ���� lib library lua WebLua conf lib library express+co WebNode conf �������0 码力 | 32 页 | 1.16 MB | 1 年前32.游戏战中陪伴助手微服务架构设计与应用
• 指导:我们去资源点搜刮吧 • 有理有据: • 去哪里 • 做什么 • 为什么 黑盒系统,输入输出 初始方案——Lua 脚本 符合直觉的第一个方案 初始方案——Lua 脚本 如何新增策略 初始方案——Lua 脚本 如何修改策略 初始方案——Lua 方案 显而易见的问题 范畴 问题 需求 - 所有策略需求都需要走开发流程 - 迭代周期长:2周开发、测试、上线 运营 token,如何高内聚,降低 token 计算逻辑复杂度 - 方案:Token 计算插件化 - 技术选型: - 对比:Lua vs Go 二进制——开发灵活 vs 性能 - 思考:Go 脚本? - 最终方案: - Go 脚本开发 - 二进制发布 我全都要 方案 耗时(冒泡排序) 耗时(斐波那契) Lua 脚本 94766 ns/op 4957 ns/op Go 脚本 23250 ns/op 27208 开发 -> 运营 需求 -> 运营 策略设计模式 人工设计 人工设计 + 离线挖掘 需求迭代周期 2 周 3~5 天 常驻人力 运营 1、开发 1、项目管理 0.5 运营 1 后台技术栈 Lua Go 代码理解成本 >10000 行代码 + 1500 行注释 135 行代码 + 82 行注释 + 开发模式文档 交接周期 未知(未交接过) 1 天(几位开发参与过) 持续测试 无 有 性能和成本优化0 码力 | 47 页 | 11.10 MB | 1 年前3Secrets of C++ Scripting Bindings
engine in C++ Learned about SWIG Learned that Python is wrong for embedding (Global state), chose Lua 2008 - Created SWIG Starter Kit SWIG is great for binding to other languages, but requires a second @le�icus emptycrate.com/idocpp SWIG Can generate wrapper libraries for: C# D Go Guile Java Javascript Lua MzScheme/Racket OCaml 4 . 3Copyright Jason Turner @le�icus emptycrate.com/idocpp SWIG Can generate Jason Turner @le�icus emptycrate.com/idocpp SWIG I have personally used it for: C# Java Javascript Lua Python Ruby 4 . 5Copyright Jason Turner @le�icus emptycrate.com/idocpp What About Boost::Python0 码力 | 177 页 | 1.65 MB | 5 月前3大规模高性能区块链架构设计模式与测试框架-李世敬
⼀个成熟的 区块链性能测评⼯具 HyperBench • 可以适配Hyperchain、Fabric等 多种不同的区块链主流平台 • 单机器性能优化 • 多压⼒机分布式可扩展 • 基于Lua脚本和虚拟机,user hook提供可编程的⽤例扩展 • 配置操作⽅便 • 脚本定制简单 • 虚拟机内置接⼝统⼀的Go区块链客 户端,可快速构建平台测试 28 趣链科技 版权所有 ©2016-2021 给其他脚本语⾔使⽤,即实现多语⾔开发。 以lua脚本为例: 为了在lua脚本中可以调⽤go的实现,将 go的实现注册到lua脚本的运⾏虚拟机中, 在此虚拟机中运⾏的lua脚本即可使⽤go的 实现。 32 趣链科技 版权所有 ©2016-2021 32 趣链科技 版权所有 ©2016-2021 32 趣链科技 版权所有 ©2016-2021 32 go插件 由于运⾏lua脚本的虚拟机提前注册了go的 实现,因此,在写lua脚本时,可直接通过注册的 key调⽤对应的go实现。 33 趣链科技 版权所有 ©2016-2021 33 趣链科技 版权所有 ©2016-2021 33 趣链科技 版权所有 ©2016-2021 33 go插件 区块链 客户端 区块链平台 区块链 SDK Fabric SDK Hyperchain SDK 适配器 34 趣链科技 版权所有 ©2016-20210 码力 | 39 页 | 56.58 MB | 1 年前3QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+
业务前置配置 日志 配置系统 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 ??� FNS Fund 宜睿 P2P BASE Other … … 剥离到网关 部分功能前置 统一接口标准 措施:剥组件[深度定制网关] 业务前置配置 日志 配置系统 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 运营活动动态配置,接口重新编排 热点功能前置,网关分发许可限流,保护底层 接口req/resp重写,透明操作 全功能API配置,热加载 (stock<0){incrby stock X;}� else { //submit}� 数据竞争� [NoSql方案示例2] 存储+运算,一致性保证 高可用措施保障 兜底策略 Redis+(lua/module)方案: local stock = redis.call("GET","STOCK") if tonumber(stock)0 码力 | 42 页 | 19.96 MB | 1 年前3Golang 微服务在腾讯游戏用户运营领域的探索及实践
overhead cLua/cLuaJIT • Performance / API friendly GopherLua 交互开销 线程 安全 VM线程开 销 学习 成本 嵌入式Lua虚拟机 Gopherlua VM Pool Closure 隔离 即写即用 One VM One Service, Write Once Run Anywhere 微服务划分 Intervene Redis、令牌桶 流控 • 轻重分离、单元化部署、容错 降级 • 实时上报、缓存汇聚/本地文件、ELK 日志监控告警 • Bind Golang to Lua 运行时类库 并发模型 异步Async 批量Batch 多核并行Parallel Lua协程绑定Go程 IO阻塞自动切换 高可用 负载均衡 寻址 限流 缓存 降级 SLA保证 并行执行单元 消息总线 屏蔽本地网络差异0 码力 | 34 页 | 1.22 MB | 1 年前3使用Go与redis构建有趣的应用
集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft0 码力 | 176 页 | 2.34 MB | 1 年前3Nacos架构&原理
限流来提高系统的限流能力。 Nacos 的 open API 都是基于 http 协议,可以很方便地使用 nginx 来做限流,不需要自身再开 发限流模块来支持各种限流策略。nginx 的基本使用以及 nginx+lua 模块安装网上资源很丰富,这 里就不再介绍。 Nacos 每个接口执行的代价不尽相同,⼀般来说写操作代价比读操作大,与此同时还有高频操作和 低频操作之分,SDK 调用的接口⼀般来说是高频接口,容易出现问题,所以在生产环境需要将这些 对写操作进行限流,可以有效防止热点写问题。对同⼀个数据的高频写会触 发 mysql 的行锁,从而导致 mysql 的多线程任务因等待行锁排队,最终导致 mysql 所有操作都 超时服务不可用。这里通过 nginx lua 模块获取 post 请求的参数,设置 limit_key 。 limit_req_zone $limit_key zone=limit_publish_config:10m rate=5r/s; set $tenant $arg_tenant; set $limit_key "$remote_addr+$dataId+$group+$tenant"; lua_need_request_body on; rewrite_by_lua ' ngx.req.read_body() local post_args = ngx.req.get_post_args() if post_args["dataId"]0 码力 | 326 页 | 12.83 MB | 9 月前3Conan 1.30 Documentation
use the following Premake script as a reference: Listing 15: premake5.lua -- premake5.lua include("conanbuildinfo.premake.lua") (continues on next page) 226 Chapter 14. Integrations Conan Documentation let Conan retrieve the dependencies and generate the dependency information in a conanbuild- info.lua: $ conan install . Then let’s call premake to generate our project: • Use this command for Windows package manager. 14.2. Build systems 227 Conan Documentation, Release 1.30.2 Listing 16: xmake.lua -- xmake.lua add_requires("conan::zlib/1.2.11@conan/stable", {alias = "zlib", debug = true}) add_requir0 码力 | 715 页 | 5.39 MB | 1 年前3Conan 1.31 Documentation
use the following Premake script as a reference: Listing 15: premake5.lua -- premake5.lua include("conanbuildinfo.premake.lua") (continues on next page) 226 Chapter 14. Integrations Conan Documentation let Conan retrieve the dependencies and generate the dependency information in a conanbuild- info.lua: $ conan install . Then let’s call premake to generate our project: • Use this command for Windows package manager. 14.2. Build systems 227 Conan Documentation, Release 1.31.4 Listing 16: xmake.lua -- xmake.lua add_requires("conan::zlib/1.2.11@conan/stable", {alias = "zlib", debug = true}) add_requir0 码力 | 721 页 | 5.41 MB | 1 年前3
共 243 条
- 1
- 2
- 3
- 4
- 5
- 6
- 25