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 年前3
Laravel 5.6 中文文档本文档由 Laravel 学院提供 Laravel 学院致力于提供优质 Laravel 中文学习资源:http://laravelacademy.org 2 Route::middleware('auth:api', 'throttle:60,1')->group(function () { Route::get('/user', function () { 5.6 中,你可以基于认证用户模型属性指定一个动态的最大请求次数,如果 User 模型包含 rate_limit 属性,可以将属性名传递 给 throttle 中间件,以便用于计算最大请求次数计数: Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () { Route::get('/user' 状态码,那么需要将它们修改 为 201。 信任代理 由于信任代码功能使用的底层 Symfony HttpFoundation 有改动,所以必须微调 App\Http\Middleware\TrustProxies 中间件。 $headers 属性之前是个数组,现在是一个接收几个不同值的属性。例如,要信任所有转发头,需要像这样更新 $headers 属性: use Illuminate\Http\Request;0 码力 | 377 页 | 14.56 MB | 1 年前3
Laravel 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 方法处理逻 return $this->release(5); }); } 而在 Laravel 6.0 中,该业务逻辑可以被提取到任务中间件中,从而 将你的任务 handle 方法从频率限制中解放出来: Middleware; use Illuminate\Support\Facades\Redis; 本文档由学院君提供 学院君致力于提供优质 Laravel0 码力 | 1442 页 | 14.66 MB | 1 年前3
Laravel 5.2 中文文档2、Laravel 5.2 Laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支 持、隐式模型绑定、简化 Eloquent 全局作用域、可选择的认证脚手架、中间件组、访问频 率限制、数组输入验证优化等等。 多认证驱动 在之前的 Laravel 版本中,框架只支持默认的、基于 session 的认证驱动,且在单个应 用中只能拥有一个认证模型类(对应单张 Eloquent 模型类的话,Laravel 将会自动注入该模型。 更多隐式模型绑定详情请查看 Laravel 5.2 文档 HTTP 路由模型绑定部分。 中间件组 中间件组允许你通过单个方便的键来对相关路由中间件进行分组,从而为某个路由一次指 定多个中间件。例如,在同一个应用中构建 Web UI 或 API 时这一特性很有用,你可以 将 session 和 csrf 路由分组到一个 web 组,或者将访问频率限制分组到 route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQ0 码力 | 377 页 | 4.56 MB | 1 年前3
Laravel 5.3 中文文档........................................................................................ 100 5.2 中间件 .................................................................................................. 此外,Passport 还包含了用于验证访问令牌认证请求包含必要令牌域的中间件: Route::get('/orders/{order}/status', function (Order $order) { // Access token has "check-status" scope... })->middleware('scope:check-status'); 最后,Passport 和 api 路由文件在如何分割 Web 界面和 API 路由方面提供了指导。api 路由文件中的路由会通 过 RouteServiceProvider 自动添加 api 前缀和 auth:api 中间件。 闭包控制台命令 除 了 通 过 命 令 类 定 义 之 外 , 现 在 Artisan 命 令 还 可 以 在 app/Console/Kernel.php 文 件 的 commands0 码力 | 691 页 | 9.37 MB | 1 年前3
Laravel 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 更多关于事件广播的内容请查看事件一节。 中间件参数 Laravel 5.1 里,中间件可以接受额外的自定义参数,例如,如果你的应用需要在执行给定 的 action 之前验证被授予指定“角色”的认证用户,可以创建一个 RoleMiddleware 来接收角 色名称作为额外参数: Middleware; use Closure; return $next($request); } } 中间件参数可以再定义路由时通过:分隔中间件名称和参数名称来指定,多个参数可以通过 逗号进行分隔: 本文档由 Laravel 学院(LaravelAcademy.org)提供 3 Route::put('post/{id}', ['middleware' => 'role:editor', functio n ($id)0 码力 | 307 页 | 3.46 MB | 1 年前3
go web 框架 严清提供强⼤大、实⽤用的 HTTP 操作⽅方法语法糖 写 web 服务就是操作 HTTP,实⽤用语法糖极⼤大提升开发⼈人员的幸福指数 Middleware 模式及其控制 Express、koa、toa、Gear、Echo、Gin、Iris… ⼤大家都选择了了中间件模式 app := gear.New() app.Set(gear.SetLogger, log.New(gear.DefaultFilterWriter() UseHandler(authService.Client) app.UseHandler(middleware.Ratelimit(&cfg, redisService.Client, authService)) app.Use(zipkinService.New()) app.Use(middleware.Pagination) app.UseHandler(initRouterV1(mongoService zipkinService, authService)) gRPC ⽣生态也玩起了了中间件模式。。。 import "github.com/grpc-ecosystem/go-grpc-middleware" myServer := grpc.NewServer( grpc.StreamInterceptor(grpc_middleware.ChainStreamServer( grpc_ctxtags0 码力 | 23 页 | 333.12 KB | 1 年前3
ThinkJS 3.0 中文文档开发框架,整合了很多最佳实践,让企业级开发变得更加简 单、高效。从 3.0 开始,ThinkJS 基于 koa 2.x,完全兼容 koa 里的 middleware 等插件。 同时,ThinkJS 支持 Extend 和 Adapter 等方式,方便扩展框架里的各种功能。 特性 支持 Middleware、Extend、Adapter 等扩展方式 基于 Koa 2.x 开发 性能优异,单元测试覆盖程度高 内置自动编译、自动更新机制,方便开发环境快速开发 production.js //⽣生产环境下的默认配置⽂文件,和 config.js 合并 | | |--- extend.js //项⽬目扩展配置⽂文件 | | |--- middleware.js //中间件配置⽂文件 | | |--- router.js //⾃自定义路路由配置⽂文件 | |--- controller //控制器器⽬目录 | | |--- base.js | | 是介绍接口变化指南。 核心变化 3.0 抛弃了已有的核心架构,基于 Koa 2.x 版本构建,兼容 Koa 里的所有功能。主要变化为: 之前的 http 对象改为 ctx 对象 执行完全改为调用 middleware 来完成 框架内置的很多功能不再默认内置,可以通过扩展来支持 项目启动 2.x 中项目启动时,会自动加载 src/bootstrap/ 目录下的所有文件。3.0 中不再自动加载所有的0 码力 | 129 页 | 2.12 MB | 1 年前3
ThinkJS 2.2 中文文档支持命令行调用执行定时任务 ThinkJS 里的 Action 除了可以响应用户的请求,同时支持在命令行下访问,借助这套机制就可以 很方便的执行定时任务。 Hook 和 Middleware ThinkJS 使用 Hook 和 Middleware 机制,可以灵活的对访问请求进行拦截处理。 详细的日志 ThinkJS 内置了详细的日志功能,可以很方便的查看各种日志,方便追查问题。 HTTP 请求日志 | |-- common | | |-- bootstrap | | | |-- generate_icon.js | | | `-- middleware.js | | |-- config | | | |-- config.js | | | |-- env | | | | 可以在这个目录下文件里定义一些全局函数、注册中间件等常用的功能。 定义全局函数 // src/common/bootstrap/fn.js global.formatDate = obj => { ... } 这里定义了一个全局函数 formatDate ,那么项目里任何地方都可以直接使用该函数。 注册中间件 // src/common/bootstrap/middleware.js think.mid0 码力 | 277 页 | 3.61 MB | 1 年前3
Egg & Node.js 从⼩⼯坊⾛向企业级开发掌握并且参与到核⼼心代码贡献 (@fengmk2 @dead_horse) Base on Koa ▸ 类似于 Connect 的定位,专注于 http 的 abstraction 层,很薄。 ▸ Middleware 的局限 ▸ 定位是拦截⽤用户请求,并在它前后做⼀一些事情。 ▸ 但实际情况下,很多功能与请求⽆无关,如定时任务,初始化,Application 扩展。 ▸ 功能之间的顺序不不能 Web 开发的核⼼心要素 编程模型约束 丰富的扩展点 可维护性 研发效率 ⽇日志 安全 多进程管理理 错误处理理 故障排除体系 测试 本地开发⼯工具包 部署体系 跨语⾔言 RPC 分布式中间件 。。。 会话管理理 ⼀一个⼤大规模团队的基础框架 最重要的是需要遵循⼀一定的约束和约定。 QuickLook [4/8] $ npm install -g egg-init $ egg-init 都能搞一套 插件机制 [5/8] ▸ 核⼼心要素 - 丰富的扩展点 ▸ 前⾯面提过 Middleware 局限性,不不适合⽤用于承载扩展的职责。 ▸ 插件机制 ▸ 就是⼀一个迷你的应⽤用,⼀一样有 Service / Config / Extend / Middleware / … ▸ 插件是围绕某个功能组织的扩展集合 ▸ 插件之间可以声明依赖关系 插件机制 代码君的演化之旅0 码力 | 70 页 | 7.57 MB | 1 年前3
共 650 条
- 1
- 2
- 3
- 4
- 5
- 6
- 65













