Building API server-side architecture for Beginners© ����-���� BASE, Inc. � Building API server-side architecture for Beginners GopherCon ���� ����.��.�� - @hgsgtk © ����-���� BASE, Inc. � Talk abstract • A practical approach to build server-side not be ignored © ����-���� BASE, Inc. �� Go beginners have a lot of questions� How to implement API server by net/http package How to write an unit test How to use interface type - Go basic questions implement API server by net/http package How to write an unit test - Go basic questions - ex. “Adopt clean architecture!” How to use interface type © ����-���� BASE, Inc. How to implement API server0 码力 | 38 页 | 690.29 KB | 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
6.从 0 到 1 搭建十亿级包裹 API Versioning从 0 到 1 搭建十亿级包 裹 API Versioning 杨利航 AfterShip 高级研发工程师 这是 API Versioning 吗? 目 录 Why 01 What 02 How 03 Takeaway 04 Why Part 1/4 1. SaaS 产品的特点 2. API 的重要性 3. 我们 API 面临的挑战 1.1 SaaS 产品的特点 SaaS 1.2 API 的重要性 API 也是产品的一部分,而不仅仅是技术。对于 SaaS 产品,提供 API 服务几乎是与企业级用户合作的必须项,特别是在海外。 - 自动化 - 通过 API,企业可以利用 SaaS 产品的功能来构建自动 化流程和工作流程。 - 定制化 - 通过 API,企业可以开发自己的应用程序、插件或集成 其他工具,以满足特定的业务需求。 - 数据集成 - 通过 API,企业可以灵活地与 - OAuth2.0 - … 1.2.2 AfterShip API 的演进路线 业务量从十万级到十亿级,从没有 API 到高标准的 API。不是因为 API 做好了所以业务增长了,而是良 好的 API 设计才能支撑业务增长。 1.3 我们 API 面临的挑战 挑战一、变更不规律,打乱客户更新计划 向后兼容 - API 的稳定性要求避免破坏性的更改。在进行更新或修改时,应 保持对现有0 码力 | 28 页 | 2.26 MB | 1 年前3
Go Module在又拍云的实践0 码力 | 28 页 | 12.85 MB | 1 年前3
3.云原生边云协同AI框架实践保护数据隐私 SIG成员近年发表分 布式协同AI顶会论文 10+ SIG成员在AI顶会IJCAI 上分享分布式协同AI论文 Sedna斩获中国信通院云边协 同应用创新大赛最佳创新奖 ✓ 数据集管理 ✓ 模型管理 ✓ …… 基础框架 ✓ 协同推理 ✓ 增量学习 ✓ 联邦学习 ✓ 终身学习 训练推理框架 ✓ 主流AI框架 ✓ 模块算法 ✓ 可扩展算法接口 ✓ …… 兼容性 项目地址:https://github com/kubeedge/sedna 开源分布式协同AI框架KubeEdge-Sedna 1. GlobalCoordinator ⚫ 统一边云协同AI任务管理 ⚫ 跨边云协同管理与协同 ⚫ 中心配置管理 2. LocalController ⚫ 特性本地流程控制 ⚫ 本地通用管理: 模型, 数据集等 3. Worker ⚫ 执行训练或推理任务, 训练/推理程序, 基于现有AI框 架开 ⚫ 按需启动, docker容器或function 增量训练 管理 数据集管理, 模型管理, 状态同步 协同推理 管理 联邦学习 管理 Local Controller Worker Worker Worker 边侧推理 Lib 边侧训练 Model Worker 云侧 推理 Lib 参数 聚合 云侧 训练 Model Global Manager AI任务协调 AI任务管理 模型/数据集管理 Cloud0 码力 | 37 页 | 2.36 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台业务 数据 业务系统 C 业务 数据 业务系统 A 业务 数据 业务系统 B 资源管理在统⼀平台 应⽤运⾏在统⼀平台 构建标准的交付环境 交付产物标准化 - 业务配置 - 资源配置 - 依赖配置 - 流⽔线配置 配置即代码 : 实现⼤规模交付的部署过程可被验证 PaaS 平台:资源管理,容器编排,基础监控和告警 APM 监控:应⽤诊断,链路追踪,⽇志分析 微服务治理组件 注册中⼼ 配置中⼼ API ⽹关 微服务拓扑 全链路追踪 错误分析 ⽇志分析 主动监控 浏览器监控 APP 监控 慢SQL JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据应⽤ 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL Redis Kafka ES MQ Minio 中间件 通⽤服务 ⾃定义服务 服务市场 Kubernetes Rancher Openshift 私有云 公共 物理机 虚拟机 微服务治理平台 DevOps 平台 边缘监控 边缘站点管理 制品 快速分发部署 边缘⽇志 边缘计算平台0 码力 | 40 页 | 8.60 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
GoFrame框架介绍及设计强大便捷的开发工具链 • 完善的本地中文化支持 • 设计为团队及企业使用 特点 框架介绍-框架架构 • 发布方式:Docker、二级制、源码模块 • 模块管理: • 核心模块、社区模块、三方模块 • Go Modules管理方式 • 开发工具链 • 设计模式:MVC、三层架构、工具集 • 应用接口:HTTP/TCP/UDP/RPC Server、终端应用、源码接口 • 数据库类 1. 模块低耦设计:文件层面的源文件下载与模块之间的逻辑耦合没有直接关系 2. 框架核心精简:功能强大且代码精简,包含测试与示例代码共8MB容量 3. 编译语言特性:编译型语言和解释型语言的模块管理逻辑不太一样 虽然框架每一个模块都按照低耦合设计,模块可以选择性引入,但在使用时也得全量下载完整框架代码。 源代码 编译 执行 目标代码 输出 打包发布 一次编译 多次执行 编译型语言: 模糊,对于开发人员写好代码的 要求会比较高 经典MVC模式 代码分层设计-三层架构模式 表示层 - UI 位于三层构架的最上层,与用户直接接触,主要是B/S中 的 WEB页面,也可以是API接口。 业务逻辑层 - BLL 对具体问题进行逻辑判断与执行操作。 数据访问层 - DAL 实现数据的增删改查等操作,并将操作结果反馈到业务逻辑层 BLL。 模型定义层 - Model0 码力 | 37 页 | 8.84 MB | 1 年前3
Go 入门指南(The way to Go)本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 月:谷歌投入使用 2011 年 5 月 5 日:Google App Engine 支持 Go 语言 从 2010 年 5 月起,谷歌开始将 Go 语言投入到后端基础设施的实际开发中,例如开发用于管理后端复杂 环境的项目。有句话叫 “吃你自己的狗食”,这也体现了谷歌确实想要投资这门语言,并认为它是有生产 价值的。 Go 语言的官方网站是 golang.org,这个站点采用 Python 作为前端,并且使用 来构建基础设施的谷歌来说,无疑从根本上 摆脱了 C++ 在构建速度上非常不理想的噩梦。这不仅极大地提升了开发者的生产力,同时也使得软件开 发过程中的代码测试环节更加紧凑,而不必浪费大量的时间在等待程序的构建上。 依赖管理是现今软件开发的一个重要组成部分,但是 C 语言中“头文件”的概念却导致越来越多因为依赖 关系而使得构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖 关系分析系统从而能够快速编译的编程语言。这正是0 码力 | 380 页 | 2.97 MB | 1 年前3
2.5 Go在猎豹移动的应用gosnowflake发号器集群; goconf统一配置管理; 接入层优化 DNS在移动网络下不适用; 避免劫持、失效,dns提供商故障; 协议压缩:pb+gzip; 节约流量; 协议设计:职责单一不适用; 合并请求; TCP Handshake影响RTT; keepalived&长连接; API动态加速; proxy模式&动态CDN; proxy模式&动态CDN; SOA Web站点是PHP开发的,通过RPC交互; rpc和api都是基于Go开发的服务; 国内DNS->VIP->lvs->tengine->Go; 海外DNS->ELB DNS->ELB->Go; Service之间通过Thrift或者net/rpc通讯; 依赖redis sdk访问redis; 直连mysql; 直连mysql; 用户的所有业务逻辑基于Go处理; Service 服务应该是无状态的; api服务出现瓶颈的时候,直接scale out; graceful restart依赖健康检测; api质量监控,使用日志来追踪,通过本 地日志+flume+hdfs+hive; 实时监控可以考虑flume sink到kafka,再 依赖Spark计算;0 码力 | 24 页 | 4.26 MB | 1 年前3
共 88 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9













