使用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 年前3
Golang大规模云原生应用管理实践Golang⼤规模云原⽣应⽤管理实践 刘洋(炎寻) 关于我 • 毕业于中国科学技术大学,定居杭州 • 就职于阿里云-云原生应用平台团队 • Problem Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 策略与机制随着层次的变化而变化; 应用管理的策略与机制 应用 版本 工作负载 负载均衡 标签 流量 组件 日志 指标 容量 服务 依赖 路由规则 持久卷 部署策略 健康检查 … 灰度 发布 定时弹性 事件 指标弹性 分批发布 重启 回滚 日志管理 事件中心 指标监控 存储挂载 服务绑定 手动弹性 回退历史 负载均衡 报警 诊断 组件管理 服务治理 … 级以维持安全,高可用,高性能的状态; • … 能力复用 自动化 可观测 稳定 安全 开发者真正想要的是策略:大象无形的基础设施,坚如磐石的中间件,丰富高效的应用PaaS平台 基础设施 云原生PaaS平台提供应用管理策略 基础设施 K8s 云原生生态(CNCF) 云原生应用 4 6 7 2 3 5 1 1 Kubectl plugins 2 Apiserver extension 3 4 50 码力 | 23 页 | 7.70 MB | 1 年前3
Go Module在又拍云的实践0 码力 | 28 页 | 12.85 MB | 1 年前3
云原生go-zero微服务框架设计思考云原生go-zero微服务框架设计思考 万俊峰Kevin@好未来 关于我 万俊峰Kevin ● go-zero作者 ● 好未来资深专家 ● 晓黑板研发负责人 ● 十多年研发团队管理经验 ● 近20年开发和架构经验 Agenda ● go-zero之前世今生 ● go-zero是如何设计的 ● go-zero如何高效解决问题 go-zero之前世今生 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 入门指南(The way to Go)语言简洁到可以将它整个的装入你的大脑中,而且比 学习 Scala(Java 的并发语言)有更低的门槛,真可谓是 21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控制台有着密不可分的关系而 感到惊奇,因为提供平台依赖性的 GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如火如荼地进行中,或许我们会在不久的将来看到一些可用的 月:谷歌投入使用 2011 年 5 月 5 日:Google App Engine 支持 Go 语言 从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中,例如开发用于管理后端复杂 环境的项目。有句话叫 “吃你自己的狗食”,这也体现了谷歌确实想要投资这门语言,并认为它是有生产 价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 来构建基础设施的谷歌来说,无疑从根本上 摆脱了 C++ 在构建速度上非常不理想的噩梦。这不仅极大地提升了开发者的生产力,同时也使得软件开 发过程中的代码测试环节更加紧凑,而不必浪费大量的时间在等待程序的构建上。 依赖管理是现今软件开发的一个重要组成部分,但是 C 语言中“头文件”的概念却导致越来越多因为依赖 关系而使得构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖 关系分析系统从而能够快速编译的编程语言。这正是0 码力 | 380 页 | 2.97 MB | 1 年前3
Go 入门指南(The way to Go)语言简洁到可以将它整个的装入你的大脑中,而且比学习 Scala(Java 的并发语言)有更低的门槛,真可谓是 21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控制台有着密不可分的关系而感到惊奇, 因为提供平台依赖性的 GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如 火如荼地进行中,或许我们会在不久的将来看到一些可用的 月:谷歌投入使用 2011 年 5 月 5 日:Google App Engine 支持 Go 语言 从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中,例如开发用于管理后端复杂环境的项 目。有句话叫 “吃你自己的狗食”,这也体现了谷歌确实想要投资这门语言,并认为它是有生产价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 来构建基础设施的谷歌来说,无疑从根本上摆脱了 C++ 在构建速度 上非常不理想的噩梦。这不仅极大地提升了开发者的生产力,同时也使得软件开发过程中的代码测试环节更加紧凑, 而不必浪费大量的时间在等待程序的构建上。 依赖管理是现今软件开发的一个重要组成部分,但是 C 语言中“头文件”的概念却导致越来越多因为依赖关系而使得 构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖关系分析系统从而能够0 码力 | 466 页 | 4.44 MB | 1 年前3
Golang 入门笔记函数可以返回多个值 2. 支持高并发 3. 每一行之后不需要分号 4. 切片slice (动态数组)、延迟执行 defer Golang 入门教程 Golang 数据操作 MySQL 数据库操作 Redis 操作 高级特征 Go 语言作用域 定义 作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 申明 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 运行时进行管理的。 goroutine 语法格式: go 函数名 (参数列表) 例子: go f(x, y, z) 通道(channel) 通道缓冲区 Go 遍历通道与关闭通道 包的基本概念 说明:Go与语言的每个文件都属于一个包,也就是说go 是以包的行是来管理文件和项目目录结构的。 作用 1. 区分相同名字的函数、变量标识符等 2.当程序文件很多的时候,可以很好的管理项目 3 在变成中,需要接受yoghurt输入的数据,就可以使用键盘输入语句来获取 步骤 1. 导入 fmt 包 2. 调用fmt 包的 fmt.Scanln() 或者 fmt.Scanf() 案例 要求:可以从控制台接受用户信息(姓名、年龄,薪酬) 1. 使用 fmt.Scanln() 获取 演示代码 2. 使用 fmt.Sacnf() 获取 演示代码 演示代码 9. 进制 对于整数有四种表示方式 10 码力 | 2 页 | 511.29 KB | 1 年前3
2.2.2 深入理解BFEBFE的设计思想 02 BFE的实现机制 03 为什么需要BFE? • 没有统一七层接入的问题 • 功能重复开发 • 运维成本高 • 流量统一控制能力低 • 引入BFE后 • 功能统一开发 • 运维统一管理 • 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务A 集群 业务B 集群 业务C 集群 BFE 状态信息的汇聚和读取成本低 • 可以将状态和日志配合使用 • Web Monitor框架 • https://github.com/baidu/go-lib • 支持状态、差值、延迟统计等 配置管理 • BFE配置的分类 • 常规配置:.conf • 动态配置:.data • 配置动态加载 • 外部触发,细粒度加载 写配置 func (t *ProductRuleTable) Update(conf err = cbs.AddFilter(bfe_module.HandleFoundProduct, m.productBlockHandler) ... } 未来计划 • BFE管理控制台对外开源 • BFE ingress controller对外开源 BFE开源项目公众号 欢迎广大Gopher使用或参与共建! 谢谢0 码力 | 26 页 | 1.78 MB | 1 年前3
Go Web编程install gcc libc6-dev来安装编译工具。 在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc,并设置相应的环境变量。 Go使用Mercurial进行版本管理,首先你必须安装了Mercurial,然后才能下载。假设你已经安装好Mercurial,执行 如下代码: 假设已经位于Go的安装目录 $GO_INSTALL_DIR下 hg clone -u o已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境 变中是否包含了Go的安装目录。 第三方工具安装 第三方工具安装 GVM GVM gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具。使用起来相当的方便,安装gvm使用如下命令: bash < <(curl -s https://raw.github.com/moovweb/gvm/mast 面系统,使用apt-get命令来管理软件包,我们可以通过下面的命令来安装Go: sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable homebrew homebrew homebrew是Mac系统下面目前使用最多的管理软件的工具,目前已支持Go,可以通过命令直接安装Go:0 码力 | 295 页 | 5.91 MB | 1 年前3
2.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 年前3
共 68 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7













