Go在数据库中间件的应用
Go在数据库中间件的应用 基础架构组/刘延允 liuyun827@foxmail.com 2017年9月 1 关于我 • 刘延允——酷狗音乐,基础架构组 • 数据库变更通知服务 • 酷狗消息队列 • 酷狗数据库中间件 • 主要工作:分布式存储、高可用、数据库 • 两年通信设备开发经验,四年互联网 • 五年C/C++使用经验,一年Golang 2 CONTENTS • 程序开发的需求 程序开发的需求 • Golang特性 • Go开发mysql中间件 • 整体方案 • 分表路由 • 故障切换 • 平滑扩容 • 系统运维 3 程序开发的需求 • 语言特性精炼,容易入门 • 开发效率高,代码逻辑清晰 • 运行性能强,节省机器资源 • 部署维护方便 • 生态圈完善 4 Golang特性 • Go语法简练;没有学习压力 • 开发效率高;语言描述能力接近于脚本语言0 码力 | 17 页 | 4.02 MB | 1 年前3Laravel 5.6 中文文档
}); }); 在 Laravel 5.6 中,你可以基于认证用户模型属性指定一个动态的最大请求次数,如果 User 模型包含 rate_limit 属性,可以将属性名传递 给 throttle 中间件,以便用于计算最大请求次数计数: Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () { Blade::withoutDoubleEncoding(); } } 缓存 频率限制器 tooManyAttempts 方法 该方法签名中未使用的 $decayMinutes 参数被移除。如果你通过自己的实现重写了该方法,也要从方法签名中移除该参数。 数据库 Morph 列的索引顺序 为了获得更好的性能,迁移方法 morphs 构建的列索引顺序倒过来了,如果你在某个迁移中使用了 morphs 方法,尝试运行该迁移的 以及辅助函数 e 默认会对特殊字符进行双重编码,从而与 PHP 底层 htmlspecialchars 函数的默认行为保持一致。如果 你想要维持不进行双重编码的旧状,可以传递 false 作为第二个参数到 e 函数: 日志 新配置文件 所有的日志配置现在都存放在独立的 config/logging.php 配置文件。你0 码力 | 377 页 | 14.56 MB | 1 年前3Laravel 5.1 中文文档
将登录次数限制引入框架,更多详情请参考认证限制一节。 Laravel 5.1 Laravel 5.1 在 5.0 的基础上继续进行优化和提升,接受 PSR-2 代码风格,新增事件广播 机制,中间件参数,Artisan 优化,等等。 PHP 5.5.9+ 由于 PHP 5.4 将会在今年 9 月份“寿终正寝”,并且 PHP 开发组不会再提供安全更新,Laravel 5.1 要求 PHP5 JavaScript 框架之间共享相同的事件名称。 更多关于事件广播的内容请查看事件一节。 中间件参数 Laravel 5.1 里,中间件可以接受额外的自定义参数,例如,如果你的应用需要在执行给定 的 action 之前验证被授予指定“角色”的认证用户,可以创建一个 RoleMiddleware 来接收角 色名称作为额外参数: 中间件参数可以再定义路由时通过:分隔中间件名称和参数名称来指定,多个参数可以通过 逗号进行分隔: 本文档由 Laravel 学院(LaravelAcademy.org)提供 3 Route::put('post/{id}'0 码力 | 307 页 | 3.46 MB | 1 年前3Laravel 6.0 中文文档
第一部分:序言 新版特性 Laravel 6.0(LTS 版本) 在 Laravel 5.8 的基础上继续进行优化, 包括引入语义化版本、兼容 Laravel Vapor、优化授权响应、支持任 务中间件、新增懒集合、优化数据库子查询、将前端脚手架提取到独 立的 Composer 包 laravel/ui、以及多个 bug 修复和可用性的提 升。 语义化版本 Laravel 框架包 laravel/framework $response->message(); } 此外,当在路由或控制器中使用 $this->authorize 或 者 Gate::authorize 方法时,这些自定义的消息会被自动返回给前 端。 任务中间件 任务中间件允许你封装自定义的队列任务异常业务逻辑,避免在任务 自身处理中混入对应样板代码。例如,在之前的 Laravel 版本中, 你可能需要在频率限制回调中封装某个任务的 handle 方法处理逻 }, function () { // 无法获取到锁... return $this->release(5); }); } 而在 Laravel 6.0 中,该业务逻辑可以被提取到任务中间件中,从而 将你的任务 handle 方法从频率限制中解放出来:0 码力 | 1442 页 | 14.66 MB | 1 年前3Laravel 5.2 中文文档
2、Laravel 5.2 Laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支 持、隐式模型绑定、简化 Eloquent 全局作用域、可选择的认证脚手架、中间件组、访问频 率限制、数组输入验证优化等等。 多认证驱动 在之前的 Laravel 版本中,框架只支持默认的、基于 session 的认证驱动,且在单个应 用中只能拥有一个认证模型类(对应单张 中,你需要通过 Route::model 方法告诉 Laravel 注入 App\User 实例以匹 配路由定义中的 {user} 参数。 现在,在 Laravel 5.2 中,框架将会基于相应 URI 片段自动注入模型,从而允许你快速 访问需要的模型实例。 如果路由参数片段 {user} 匹配路由闭包或控制器方法中相应变量 $user,并且被类型声明 为一个 Eloquent 模型类的话,Laravel 模型类的话,Laravel 将会自动注入该模型。 更多隐式模型绑定详情请查看 Laravel 5.2 文档 HTTP 路由模型绑定部分。 中间件组 中间件组允许你通过单个方便的键来对相关路由中间件进行分组,从而为某个路由一次指 定多个中间件。例如,在同一个应用中构建 Web UI 或 API 时这一特性很有用,你可以 将 session 和 csrf 路由分组到一个 web 组,或者将访问频率限制分组到 api0 码力 | 377 页 | 4.56 MB | 1 年前3Laravel 5.3 中文文档
........................................................................................ 100 5.2 中间件 .................................................................................................. orders', 'check-status' => 'Check order status', ]); 此外,Passport 还包含了用于验证访问令牌认证请求包含必要令牌域的中间件: Route::get('/orders/{order}/status', function (Order $order) { // Access token has "check-status" 和 api 路由文件在如何分割 Web 界面和 API 路由方面提供了指导。api 路由文件中的路由会通 过 RouteServiceProvider 自动添加 api 前缀和 auth:api 中间件。 闭包控制台命令 除 了 通 过 命 令 类 定 义 之 外 , 现 在 Artisan 命 令 还 可 以 在 app/Console/Kernel.php 文 件 的 commands0 码力 | 691 页 | 9.37 MB | 1 年前3Nacos架构&原理
, 对软负载⼀个系统的进行阐述,通过 Nacos 开源分享阿里软负载最佳实践,希望能够帮助到各位开 发者,各位系统架构师,少走弯路。 阿里巴巴云原生应用平台负责人 - 丁宇(叔同) 在阿里中间件开源、自研、商业三位⼀体的战略中,微服务 DNS(Dubbo+Nacos+Spring-cloud- alibba/Sentinel/Seata)组合始终走在前列,引领着微服务领域的发展趋势。Nacos Nacos,也有助于提高分布式系统的设计研发能力。 阿里巴巴中间件负责人 - 胡伟琪(白慕) 阿里巴巴在 10 多年分布式应用架构实践过程中,产出了⼀大批非常优秀的中间件技术产品,其中软 负载领域的 Diamond、Configserver、Vipserver,无论在架构先进性、功能丰富度以及性能方面均 有非常出色的积累,2018 年初中间件团队决定把这⼀领域的技术进行重新梳理并开源,这就是本书 变更快了之后如何管控控制变更风险,如灰度、回滚等 敏感配置如何做安全配置 Nacos 架构 < 22 概念介绍 配置(Configuration) 在系统开发过程中通常会将⼀些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配 置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物 理运行环境进行适配。配置管理⼀般包含在系统部署的过程中,由系统管理员或者运维人员完成这0 码力 | 326 页 | 12.83 MB | 9 月前3美团点评2018技术年货
154 ...................................................................... 美团服务体验平台对接业务数据的最佳实践-海盗中间件 167 ...................................................................... 美团点评智能支付核心交易系统的可用性实践 176 美团点评基础架构部希望在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集 群智能调度等领域提供业界领先的、统一的解决方案,CAT 目前在美团点评的产品定位是应用层的统一 监控组件,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能 指标、健康状况、实时告警等服务。 本文会对 CAT 的客户端、性能等做详细深入的介绍,前不久我们也发过一篇 CAT 源建设工作,为 CAT 的成长贡献 了巨大的力量。 CAT 3.0 开源发布,支持多语言客户端及多项性能提升 - 美团技术团队 美团点评基础架构部负责人黄斌强表示,在过去四年中,美团点评在架构中间件领域有比较多的积累沉 淀,很多系统服务都经历过大规模线上业务实际运营的检验。我们在使用业界较多开源产品的同时,也希 望能把积累的技术开源出去,一方面是回馈社区,贡献给整个行业生态;另一方面,让更多感兴趣的开发0 码力 | 229 页 | 61.61 MB | 1 年前3ThinkJS 3.0 中文文档
production.js //⽣生产环境下的默认配置⽂文件,和 config.js 合并 | | |--- extend.js //项⽬目扩展配置⽂文件 | | |--- middleware.js //中间件配置⽂文件 | | |--- router.js //⾃自定义路路由配置⽂文件 | |--- controller //控制器器⽬目录 | | |--- base.js | | |--- index {String} 参数名 value {Mixed} 参数值 return {Mixed} 获取、设置 URL 上的参数值。由于 get 、 query 等名称已经被 Koa 使用,所以这里只能使用 param。 ctx.param('name'); //获取参数值,如果不不存在则返回 undefined ctx.param(); //获取所有的参数值,包含动态添加的参数 ctx.param('name1 name2'); //获取指定的多个参数值,中间⽤用逗号隔开 ctx.param('name', value); //重新设置参数值 ctx.param({name: 'value', name2: 'value2'}); //重新设置多个参数值 post(name, value) name {String} 参数名 value {Mixed} 参数值 return {Mixed}0 码力 | 129 页 | 2.12 MB | 1 年前3降级预案在同程艺龙的工程实践-王俊翔
级点,降级是如 何实现的 • 缺乏UI、没有灵活的参数、策略略配置,没有预案制定管理理能⼒力力 业务保障平台建设之路路 业务保障平台建设之路路 服务管理理 策略略管理理 预案制定 线上演练 • 降级服务统⼀一注册管理理,通过降 级服务质量量数据从整体反映各应 ⽤用的降级点和可⽤用性保障措施 • 降级策略略集中管理理,通过参数 化、配置化、脚本化⽅方式实现线 上策略略的灵活调整 上策略略的灵活调整 • 依据服务重要程度,从全局制定 分级预案,对降级点进⾏行行预案编 排,并跟踪监控降级链路路的执⾏行行 • 发现潜在故障,多维度验证预案 有效性,评估系统可靠性,提供 降级策略略、参数调整的优化依据 整体架构 Agent 服务降级注册 降级熔断通知 元数据存储 控制 中⼼心 ETCD ETCD ETCD ETCD 服务注册监听 降级控制中⼼心 元数据 TurboMQ 如何才能持续保障系统的⾼高可⽤用性? 故障演练 • 对预案进⾏行行有效性、合理理性验证 • 通过破坏性测试,发现系统的潜在故障,及时修正,并做好降级预防措施 • 参数修正,及时调整流控、降级策略略,优化告警、超时参数设置 • 模拟线上故障,进⾏行行故障复现,验证故障后续的处理理措施是否⾏行行之有效 • 以战养兵,历练团队,让⼯工程师有更更多机会积累经验,提升应对故障的能⼒力力 常态化的故障演练对系统进⾏行行反复验证0 码力 | 26 页 | 18.67 MB | 1 年前3
共 452 条
- 1
- 2
- 3
- 4
- 5
- 6
- 46