使用Go与redis构建有趣的应用
Go 和 Redis 构建有趣的程序 ⻩黄健宏 @ huangz.me 关于我 • ⻩黄健宏,⽹网名 huangz ,⼴广东清远⼈人。 • 计算机技术图书作者和译者,偶尔也写⼀一点⼩小程序⾃自娱⾃自乐。 • 精通 Go、 Python 、 Ruby 、 PHP、 C 等数⼗十种语⾔言……的 Hello World ! • 著作:《Redis 设计与实现》,《Redis 使⽤用教程》(写作中)。 Web 编程》,《Redis 实战》。 • 开源⽂文档:《Go 标准库中⽂文⽂文档》,《Redis 命令参考》,《SICP 解题集》等。 • 个⼈人⽹网站: huangz.me 。 路路线图 路路线图 ⼀一. Redis 简介 路路线图 ⼀一. Redis 简介 ⼆二. 使⽤用 Redis 构建锁 路路线图 ⼀一. Redis 简介 ⼆二. 使⽤用 Redis 构建锁 三 三. 使⽤用 Redis 构建在线⽤用户统计器器 路路线图 ⼀一. Redis 简介 ⼆二. 使⽤用 Redis 构建锁 三. 使⽤用 Redis 构建在线⽤用户统计器器 四. 使⽤用 Redis 构建⾃自动补完程序 Redis an open source, in-memory data structure store 特点 特点 • 具有多种不不同的数据结构可⽤用,其0 码力 | 176 页 | 2.34 MB | 1 年前32.7 Golang与高性能DSP竞价系统
预警接⼝口: Interface 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved 预警接⼝口: Redis 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved Dispatch: 数据、状态同步 Dispatch Reserved • 重度使⽤用Redis • 存放的数据包括 • CookieMapping • 曝光频次 • DMP⼈人群数据 • 实时费⽤用消耗 • 其他 Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • Server端:等待Redis官⽅方(当时还没有的) 性能损耗 Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 最终在Client端实现 • ⼀一致性hash: github.com/stathat/consistent • 预先开启⾜足够多的Redis实例,预防增加节点带来的数据 迁移⿇麻烦 Redis集群 专业DSP解决⽅方案0 码力 | 51 页 | 5.09 MB | 1 年前3Build web application with Golang
just for the purpose of caching. I will introduce you to two NoSQL databases, which are MongoDB and Redis, in section 5.6. Links Directory Previous Chapter: Chapter 4 Summary Next section: database/sql century, Go has good support for NoSQL databases, including the popular redis, mongoDB, Cassandra and Membase NoSQL databases. redis redis is a key-value storage system like Memcached, that supports the string some Go database drivers for redis: https://github.com/garyburd/redigo https://github.com/go-redis/redis https://github.com/hoisie/redis https://github.com/alphazero/Go-Redis https://github.com/simonz05/godis0 码力 | 327 页 | 1.63 MB | 1 年前3基于open-falcon的平安云监控
agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab agent管理 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 数据上报 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 告警判断 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 数据查询 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 告警配置 agent transfer meta updater hbs graph judge redis sender query mysql web alarm gitlab 插件脚本下发0 码力 | 30 页 | 10.40 MB | 1 年前3Go Web编程
库驱动,可以方便的使用Go style来进行数据库操作。 目前NOSQL已经成为Web开发的一个潮流,很多应用采用了NOSQL作为数据库,而不是以前的缓存,5.6小节将介绍 MongoDB和Redis两种NOSQL数据库。 目录 目录 links links 目录 上一章: 第四章总结 下一节: database/sql接口 115 5.1 database/sql接口 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoDB、Cassandra和 Membase等。这些数据库都有高性能、高并发读写等特点,目前已经广泛应用于各种应用中。我接下来主要讲解一下 redis和mongoDB的操作。 redis redis redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符 串)、list(链表)、set(集合)和zset(有序集合)。 目前应用redis最广泛的应该是新浪微博平台,其次还有Facebook收购的图片社交网站instagram。以及其他一些有名 的互联网企业 Go目前支持redis的驱动有如下 - https://github.com/alphazero/Go-Redis - http://code.google.com/p/tideland-rdc/0 码力 | 295 页 | 5.91 MB | 1 年前3云原生go-zero微服务框架设计思考
gRPC协议 日志记录 缓存控制 调用鉴权 异常捕获 并发控制 数据统计 监控报警 链路跟踪 自动降载 自动熔断 超时控制 Redis集群 Redis集群 数据库 MySQL集群 MongoDB集群 ClickHouse集群 服务发现 ETCD集群 Redis集群 代码未动,数据先行 ● 定义数据边界 ● 数据库互相隔离,通过RPC访问 ● No join, no pain! 用户 ● 缓存一分钟 ● 缓存击穿,热点key过期 ● 只拿一次数据,共享结果 ● 缓存雪崩,大量缓存同时过期 ● 过期时间设置随机偏差 service redis1 mysql/mongo clusters redis2 redis3 类似DB的缓存索引方式 ● 不允许不过期的缓存 ● 分布式缓存,易伸缩 ● 自动生成,自带统计 缓存的最佳实践 ● 协议选择 - gRPC ●0 码力 | 29 页 | 5.70 MB | 9 月前3用Go语言实现推送服务器
函数可以作为值 • 面向并发 • 内置RPC支持 推送服务器要求的应对 • 高并发 – goroutine • 可靠性 – 使用Redis暂存消息 • 高性能 – 静态编译语言 • 支持水平扩展 – 使用RPC组成集群 • 无单点故障 – 使用Redis实现数据共享 Go语言的并发模型 • 事件驱动,共享线程池 runtime.GOMAXPROCS(runtime.NumCPU()) 个获取返回值的channel 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 逻辑架构 去中心化设计 • 客户端随机连接 • Redis集中存储地址表 • 信息发送2跳到达 消息缓存设计 • 消息预存(Redis) • 尝试发送 • 发送成功后删除 客户端注册时序图 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 串行场景-Socket0 码力 | 25 页 | 260.04 KB | 1 年前32.5 Go在猎豹移动的应用
我们做了啥? 业务 猎豹移动全球passport体系; 游戏开放平台; 游戏支付体系; 平台 基于gopush的推送平台&goim; 基于redis sentinel的smart client; rpc框架; gosnowflake发号器集群; goconf统一配置管理; 接入层优化 DNS在移动网络下不适用; 国内DNS->VIP->lvs->tengine->Go; 海外DNS->ELB DNS->ELB->Go; Service之间通过Thrift或者net/rpc通讯; 依赖redis sdk访问redis; 直连mysql; 用户的所有业务逻辑基于Go处理; Service 服务应该是无状态的; api服务出现瓶颈的时候,直接scale out; Cache 模仿cpu使用多级cache; L1 cache:不经常修改,大量访问对性 能要求极致的,我们使用go map缓存信 息,使用COW保证无锁更新和访问; 使用redis作为核心的cache store; 使用hash mod region方式对cache进行 扩展; goconf xml,yaml,json,ini? 阶段1:逐idc,逐机器配置修改;0 码力 | 24 页 | 4.26 MB | 1 年前302. Service Mesh落地之后_为sidecar注入灵魂 - 周群力
MOSN App 业务逻辑 RPC SDK port 1 各种各样的SDK bolt port 2 Cache SDK Redis MQ SDK port 3 Config SDK 基础设施强绑定 MQ SOFA-RPC Redis SOFA-MQ Config port 4 SOFA- config 基础设施 RPC Cache MQ Config 新的挑战 基础设施 新的挑战 2:异构语言接入成本高 12 MOSN NodeJS 业务逻辑 RPC SDK 通信序列化协议 RPC Cache MQ Config SOFA-RPC Redis SOFA-MQ SOFA- config 基础设施 X SDK 通信序列化协议 新的挑战 2:异构语言接入成本高 13 MOSN NodeJS 业务逻辑 X SDK 通信序列化协议 Config python 业务逻辑 X SDK 通信序列化协议 go 业务逻辑 X SDK 通信序列化协议 C++ 业务逻辑 X SDK 通信序列化协议 SOFA- RPC Redis SOFA-MQ SOFA-config 基础设施 14 Multi-Runtime 什么是 Runtime? 15 图片来源: https://www.etsy.com/listin0 码力 | 63 页 | 880.85 KB | 1 年前3Golang大规模云原生应用管理实践
ScaledObject spec: maxReplicaCount: 4 triggers: - type: redis ... - trait: apiVersion: extended.oam.dev/v1 kind: Route kind: Network name: my-vpc-network-X - instanceName: backend componentName: redis scopes: - scope: apiVersion: core.oam.dev/v1alpha2 kind: Network ScaledObject spec: maxReplicaCount: 4 triggers: - type: redis ... - trait: apiVersion: extended.oam.dev/v1 kind: Route0 码力 | 23 页 | 7.70 MB | 1 年前3
共 30 条
- 1
- 2
- 3