 分布式异地多活架构实践之路讯飞输入法异地多活架构实践之路 凌 军 自我介绍 • 凌军 • 2010年加入科大讯飞 • 讯飞输入法、灵犀语音助手等产品服务端架构负责人 • 科大讯飞消费者BG基础平台架构负责人 产品介绍 • 稳居国内输入法第一阵营 • 2010-10~至今 • 4亿用户 • 1.1亿月活 来自:中国科学院《互联网周刊》 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些挑战 • • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 单机房遇到的问题 可用性低 响应时间慢 系统扩容难 可用性低 响应时间慢 系统扩容难 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 实际应用效果 • 后续规划 技术挑战 几十毫秒的延迟; 跨机房性能较慢 机房天然延迟 专线费用高; 专线不稳定 跨机房专线问题 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 业务特点分析 业务分类 业务举例 业务特点 场景归类 核心业务 皮肤、表情、资源、广告、应用墙译等 读多写少 主从模式 (单点写,多点读) 用户个性化数据同步、账号等 读写均衡 多主模式 (多点读写) 分布式日志收集等 写多读少 汇聚模式 (多点写,单点读)0 码力 | 36 页 | 1.66 MB | 1 年前3 分布式异地多活架构实践之路讯飞输入法异地多活架构实践之路 凌 军 自我介绍 • 凌军 • 2010年加入科大讯飞 • 讯飞输入法、灵犀语音助手等产品服务端架构负责人 • 科大讯飞消费者BG基础平台架构负责人 产品介绍 • 稳居国内输入法第一阵营 • 2010-10~至今 • 4亿用户 • 1.1亿月活 来自:中国科学院《互联网周刊》 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些挑战 • • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 单机房遇到的问题 可用性低 响应时间慢 系统扩容难 可用性低 响应时间慢 系统扩容难 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 实际应用效果 • 后续规划 技术挑战 几十毫秒的延迟; 跨机房性能较慢 机房天然延迟 专线费用高; 专线不稳定 跨机房专线问题 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 业务特点分析 业务分类 业务举例 业务特点 场景归类 核心业务 皮肤、表情、资源、广告、应用墙译等 读多写少 主从模式 (单点写,多点读) 用户个性化数据同步、账号等 读写均衡 多主模式 (多点读写) 分布式日志收集等 写多读少 汇聚模式 (多点写,单点读)0 码力 | 36 页 | 1.66 MB | 1 年前3
 Go Context原理及其典型适用场景Context原理及其适用场景 随手记 李帅(飞雪无情) n 常见并发模式 n Context实现原理 n TLS VS Context n 典型适用场景 大纲 Channel Fan-in func fanIn(sum1, sum2 <-chan int) <-chan int { sum := make(chan int) go func() { for {sum <- <-sum1}0 码力 | 32 页 | 4.62 MB | 1 年前3 Go Context原理及其典型适用场景Context原理及其适用场景 随手记 李帅(飞雪无情) n 常见并发模式 n Context实现原理 n TLS VS Context n 典型适用场景 大纲 Channel Fan-in func fanIn(sum1, sum2 <-chan int) <-chan int { sum := make(chan int) go func() { for {sum <- <-sum1}0 码力 | 32 页 | 4.62 MB | 1 年前3
 Rust HTTP 协议栈在终端通信场景的实践 - 胡凯HTTP 协议栈在终端通信场景的实践 胡凯 hukai45@huawei.com 华为 公共开发部 嵌入式软件能力中心 什么是 HTTP 协议? ⚫ HTTP 协议介绍 目录 终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题。 ⚫ 终端 HTTP 通信场景浅析 我们当前结合 Rust 和终端通信场景的实践的简单介绍。 ⚫ Rust 与终端 HTTP 通信场景结合 介绍 Rust 2023, Shanghai, China HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 等各种连接为基础的,非常依赖于高性能的 IO 操作。 利用 Rust 异步实现 HTTP 协议和各种应用程序能得到十分可观的性能提升,并且能降低用户编码的难度。 Rust China Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 借助于 Rust 异步能力的热门 Rust HTTP 协议库或应用库: Hyper reqwest actix-web axum Rust0 码力 | 26 页 | 1.25 MB | 1 年前3 Rust HTTP 协议栈在终端通信场景的实践 - 胡凯HTTP 协议栈在终端通信场景的实践 胡凯 hukai45@huawei.com 华为 公共开发部 嵌入式软件能力中心 什么是 HTTP 协议? ⚫ HTTP 协议介绍 目录 终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题。 ⚫ 终端 HTTP 通信场景浅析 我们当前结合 Rust 和终端通信场景的实践的简单介绍。 ⚫ Rust 与终端 HTTP 通信场景结合 介绍 Rust 2023, Shanghai, China HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 等各种连接为基础的,非常依赖于高性能的 IO 操作。 利用 Rust 异步实现 HTTP 协议和各种应用程序能得到十分可观的性能提升,并且能降低用户编码的难度。 Rust China Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 借助于 Rust 异步能力的热门 Rust HTTP 协议库或应用库: Hyper reqwest actix-web axum Rust0 码力 | 26 页 | 1.25 MB | 1 年前3
 JAVA 应用与开发 - 控制台应用程序设计JAVA 应用与开发 控制台应用程序设计 让我们愉快的 Coding 起来吧... ��� �������������� October 13, 2018 ���� ����������� ��������������行参数��������输入 输出的����关 Java �作 �� Java 文件�作的的��方法 ������ �� Jar �����������行� IDE ������参数���参数��为��行参数��法����� 1 java <������> [<��行参数>]* O 说明 命令行参数将被系统接收并静态初始化为一个一维的 String 数 组对象,然后将之作为实参传给应用程序入口方法 main()。 命令行参数须使用空格符分隔,如果参数中包含空格符则必须 使用双引号括起来。 8 41 ����� ��行参数 ���� Java ��������可�一������������ ������参数���参数��为��行参数��法����� 1 java <������> [<��行参数>]* O 说明 命令行参数将被系统接收并静态初始化为一个一维的 String 数 组对象,然后将之作为实参传给应用程序入口方法 main()。 命令行参数须使用空格符分隔,如果参数中包含空格符则必须 使用双引号括起来。 8 41 ����� 课程配套代码 ± sample.commandline.CommandLineArgsSample0 码力 | 63 页 | 2.84 MB | 1 年前3 JAVA 应用与开发 - 控制台应用程序设计JAVA 应用与开发 控制台应用程序设计 让我们愉快的 Coding 起来吧... ��� �������������� October 13, 2018 ���� ����������� ��������������行参数��������输入 输出的����关 Java �作 �� Java 文件�作的的��方法 ������ �� Jar �����������行� IDE ������参数���参数��为��行参数��法����� 1 java <������> [<��行参数>]* O 说明 命令行参数将被系统接收并静态初始化为一个一维的 String 数 组对象,然后将之作为实参传给应用程序入口方法 main()。 命令行参数须使用空格符分隔,如果参数中包含空格符则必须 使用双引号括起来。 8 41 ����� ��行参数 ���� Java ��������可�一������������ ������参数���参数��为��行参数��法����� 1 java <������> [<��行参数>]* O 说明 命令行参数将被系统接收并静态初始化为一个一维的 String 数 组对象,然后将之作为实参传给应用程序入口方法 main()。 命令行参数须使用空格符分隔,如果参数中包含空格符则必须 使用双引号括起来。 8 41 ����� 课程配套代码 ± sample.commandline.CommandLineArgsSample0 码力 | 63 页 | 2.84 MB | 1 年前3
 微服务架构云端应用0 码力 | 32 页 | 864.40 KB | 1 年前3 微服务架构云端应用0 码力 | 32 页 | 864.40 KB | 1 年前3
 微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心 大纲 •离 数据一致性的起因 •合 数据一致性的解决方案 •断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB0 码力 | 31 页 | 4.28 MB | 1 年前3 微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心 大纲 •离 数据一致性的起因 •合 数据一致性的解决方案 •断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB0 码力 | 31 页 | 4.28 MB | 1 年前3
 Java 应用与开发 - Servlet 编程大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java 应用与开发 Servlet 编程 王晓东 wangxiaodong@ouc.edu.cn 计算机科学与技术系 November 13, 2018 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 学习目标 1. 理解 Web 的概念及工作模式,掌握 Java Web 应用的构成。 2. 掌握 Servlet 的概念、体系结构及生命周期管理基本原理。 3. 掌握 Servlet 的编程及配置方法,了解 Servlet 的在 Tomcat 服务器上的部署方式(war)。 大纲 Web 基础 Servlet (图片、声音、视频)。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java Web 应用的构成 ▶ HTML 文档 ▶ CSS ▶ JavaScript ▶ 图片文件 ▶ Servlet ▶ JSP ▶ JavaBean 类 ▶ Java Lib ▶ Web 配置文件:/WEB-INF/web0 码力 | 50 页 | 725.36 KB | 1 年前3 Java 应用与开发 - Servlet 编程大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java 应用与开发 Servlet 编程 王晓东 wangxiaodong@ouc.edu.cn 计算机科学与技术系 November 13, 2018 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 学习目标 1. 理解 Web 的概念及工作模式,掌握 Java Web 应用的构成。 2. 掌握 Servlet 的概念、体系结构及生命周期管理基本原理。 3. 掌握 Servlet 的编程及配置方法,了解 Servlet 的在 Tomcat 服务器上的部署方式(war)。 大纲 Web 基础 Servlet (图片、声音、视频)。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java Web 应用的构成 ▶ HTML 文档 ▶ CSS ▶ JavaScript ▶ 图片文件 ▶ Servlet ▶ JSP ▶ JavaBean 类 ▶ Java Lib ▶ Web 配置文件:/WEB-INF/web0 码力 | 50 页 | 725.36 KB | 1 年前3
 Java 应用与开发 - 异常处理大纲 异常的概念及分类 Java 异常处理机制 Java 应用与开发 异常处理 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 30, 2018 大纲 异常的概念及分类 Java 异常处理机制 学习目标 1. 掌握 Java 异常的概念和分类 2. 深入理解 Java 异常处理机制 大纲 异常的概念及分类 Java 异常处理机制 大纲 异常的概念及分类 异常处理机制 C++ 中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在 异常处理机制 C++ 中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在0 码力 | 33 页 | 626.40 KB | 1 年前3 Java 应用与开发 - 异常处理大纲 异常的概念及分类 Java 异常处理机制 Java 应用与开发 异常处理 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 30, 2018 大纲 异常的概念及分类 Java 异常处理机制 学习目标 1. 掌握 Java 异常的概念和分类 2. 深入理解 Java 异常处理机制 大纲 异常的概念及分类 Java 异常处理机制 大纲 异常的概念及分类 异常处理机制 C++ 中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在 异常处理机制 C++ 中的异常处理 O 《The C++ Programming Language》 ▶ 一个库的作者可以检测出发生了运行时错误,但一般不知道 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在0 码力 | 33 页 | 626.40 KB | 1 年前3
 JAVA 应用与开发 - 泛型JAVA 应用与开发 泛 型 让我们愉快的 Coding 起来吧... ��� �������������� October 5, 2018 ���� 理��型的��,������� ▶ �合���的�型 ▶ �型的����� ������型类��型�法 ▶ 理�类型参数 ▶ 理�����������的�型类��型�法 ▶ 受��的类型参数 ��处理�型类型,����������型�器����作0 码力 | 35 页 | 587.40 KB | 1 年前3 JAVA 应用与开发 - 泛型JAVA 应用与开发 泛 型 让我们愉快的 Coding 起来吧... ��� �������������� October 5, 2018 ���� 理��型的��,������� ▶ �合���的�型 ▶ �型的����� ������型类��型�法 ▶ 理�类型参数 ▶ 理�����������的�型类��型�法 ▶ 受��的类型参数 ��处理�型类型,����������型�器����作0 码力 | 35 页 | 587.40 KB | 1 年前3
 Java 应用与开发 - 线程编程大纲 线程基础 线程控制 线程的同步 Java 应用与开发 线程编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 November 6, 2018 大纲 线程基础 线程控制 线程的同步 学习目标 1. 线程基础:理解任务调度、进程和线程,掌握其联系和区别; 掌握 Java 的线程模型,以及如何创建线程;理解后台线程。 2. 线程控制:理解线程的生命周期,明白各阶段的含义;掌握 大纲 线程基础 线程控制 线程的同步 相关知识回顾 概念回顾 O 进程 ▶ 进程是一个具有一定独立功能的程序在一个数据集上的一次 动态执行的过程,是操作系统进行资源分配和调度的一个独 立单位,是应用程序运行的载体。 (展示类 UNIX 系统的进程树) ▶ 进程一般由程序段、数据段和进程控制块三部分构成进程 实体。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 什么是线程 根据多 线程作为“轻量的进程”,同一类线程共享代码和数据空间,每个 线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 3. 多进程——在操作系统中能同时运行多个任务(程序)。 4. 多线程——在同一应用程序中有多个顺序流同时执行。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 线程和进程的区别和联系 代码 数据 进程空间 打开文件 寄存器 栈 线程 1 寄存器 栈 线程 20 码力 | 82 页 | 1010.73 KB | 1 年前3 Java 应用与开发 - 线程编程大纲 线程基础 线程控制 线程的同步 Java 应用与开发 线程编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 November 6, 2018 大纲 线程基础 线程控制 线程的同步 学习目标 1. 线程基础:理解任务调度、进程和线程,掌握其联系和区别; 掌握 Java 的线程模型,以及如何创建线程;理解后台线程。 2. 线程控制:理解线程的生命周期,明白各阶段的含义;掌握 大纲 线程基础 线程控制 线程的同步 相关知识回顾 概念回顾 O 进程 ▶ 进程是一个具有一定独立功能的程序在一个数据集上的一次 动态执行的过程,是操作系统进行资源分配和调度的一个独 立单位,是应用程序运行的载体。 (展示类 UNIX 系统的进程树) ▶ 进程一般由程序段、数据段和进程控制块三部分构成进程 实体。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 什么是线程 根据多 线程作为“轻量的进程”,同一类线程共享代码和数据空间,每个 线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 3. 多进程——在操作系统中能同时运行多个任务(程序)。 4. 多线程——在同一应用程序中有多个顺序流同时执行。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 线程和进程的区别和联系 代码 数据 进程空间 打开文件 寄存器 栈 线程 1 寄存器 栈 线程 20 码力 | 82 页 | 1010.73 KB | 1 年前3
共 592 条
- 1
- 2
- 3
- 4
- 5
- 6
- 60














 
  
 