2.1.7 谈如何构建易于拆分的单体应用谈如何构建易于拆分的单体应⽤ 郑渊 腾讯公司 ⾼级⼯程师 ⽬ 录 微服务架构的困境与突破 01 建模:通过表象看本质 02 基于go-kit构建易拆分的单体应⽤ 03 总结 04 微服务架构的困境与突破 第⼀部分 微服务架构的困境与突破 01 Monolith to Microservices To move from Monolithic to Microservices Microservice) 1. 建模⽅法不只有领取驱动设计-DDD,还有⽤例驱动 设计-UDD等; 2. 并不是开始进⾏微服务拆分的时候才⽤到对应的建 模⽅法,在设计单体架构下同样也需要; ➢ 合适的时机选择合适的架构,⼤多数情况下单体先⾏, 尤其是对于创业公司或者⼤公司内部的创业项⽬ or ⼩项 ⽬ ➢ 选择基础设施相对完善的云平台和合适的业务框架 03 突破 建模:通过表象看本质 第⼆部分 第⼆部分 建模:通过表象看本质 ➢ 软件开发过程:描述软件开发全过程、软件开发活动以及他们之间关系的结构框架。 。。。 常⻅的软件开发模型 RUP开发模型 业务建模 01 软件开发过程 建模:通过表象看本质 ➢ 建模:对现实世界特征的模拟和抽象,⽐如机械模型,汽⻋模型等。 02 何为建模 ➢ 不同的想法 1. 不⽤建模,搞出来的系统照样跑的好好 的; 2. ⼈⼒不⾜,先顶住再优化;0 码力 | 27 页 | 13.04 MB | 1 年前3
对 Go 程序进行可靠的性能测试是先研究出中心极限定 理,而后发现正态分布的形式在后续研究中非常常见,就将其称之为正态分布。 2020 © Changkun Ou · Go 夜读 · 对 Go 程序进行可靠的性能测试 更复杂的建模 37 对结果进行回归,肉眼可见的性能下降 https://github.com/changkun/cgo-benchmarks/tree/master/syscall 机器过热问题可以通过更复杂的数学建 机器过热问题可以通过更复杂的数学建 模来解决(例如 MCMC),右边的图中虽 然存在机器过热问题,但实际上我们对 数据的直观感受是,Go syscall 是显著慢 于 C syscall 的 但实践中这种复杂的建模对性能测试有 指导意义吗?也许没有 ⇒ 找一个稳定的机器比花哨的数学更重要 不过,倒是可以考虑如何自动检测样本 数据中的这种现象来避免新手犯错。0 码力 | 37 页 | 1.23 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台• 统⼀模块的初始化、启动、关闭 • 统⼀管理模块间的依赖关系 • ⽀持模块间的依赖注⼊ • 包含⼤量现成的微模块 • ⽀持统⼀ gRPC 和 HTTP 接⼝设计、以及拦截器 • 提供快速构建模块的代码⽣成⼯具 Erda Infra 如何设计 Erda Infra 有什么不同 - 不是重复造轮⼦ - 不仅是web框架 - 不仅是微服务框架 - 为扩展⽽⽣ - 以模块化的开发为核⼼0 码力 | 40 页 | 8.60 MB | 1 年前3
Hello 算法 1.0.0b1 Golang版树或红黑树,从而将时间效率从 ?(?) 优化至 ?(log ?) ,还可以通 过中序遍历获取有序序列;还可以将链表转化为哈希表,将时间复杂度降低至 ?(1) 。 9.1.4. 图常见应用 现实中的许多系统都可以使用图来建模,对应的待求解问题也可以被约化为图计算问题。 顶点 边 图计算问题 社交网络 用户 好友关系 潜在好友推荐 地铁线路 站点 站点间的连通性 最短路线推荐 太阳系 星体 星体间的万有引力作用 行星轨道计算 此时间效率较低。 ‧ 当邻接表中的链表过长时,可以将其转化为红黑树或哈希表,从而提升查询效率。 ‧ 从算法思想角度分析,邻接矩阵体现“以空间换时间”,邻接表体现“以时间换空间” ‧ 图可以用于建模各类现实系统,例如社交网络、地铁线路等。 ‧ 树是图的一种特例,树的遍历也是图的遍历的一种特例。 ‧ 图的广度优先遍历是一种由近及远、层层扩张的搜索方式,常借助队列实现。 ‧ 图的深度优先遍历0 码力 | 190 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Golang版树或红黑树,从而将时间效率从 ?(?) 优化至 ?(log ?) ,还可以通 过中序遍历获取有序序列;还可以将链表转化为哈希表,将时间复杂度降低至 ?(1) 。 9.1.4. 图常见应用 现实中的许多系统都可以使用图来建模,对应的待求解问题也可以被约化为图计算问题。 顶点 边 图计算问题 社交网络 用户 好友关系 潜在好友推荐 地铁线路 站点 站点间的连通性 最短路线推荐 太阳系 星体 星体间的万有引力作用 行星轨道计算 此时间效率较低。 ‧ 当邻接表中的链表过长时,可以将其转化为红黑树或哈希表,从而提升查询效率。 ‧ 从算法思想角度分析,邻接矩阵体现“以空间换时间”,邻接表体现“以时间换空间” ‧ 图可以用于建模各类现实系统,例如社交网络、地铁线路等。 ‧ 树是图的一种特例,树的遍历也是图的遍历的一种特例。 ‧ 图的广度优先遍历是一种由近及远、层层扩张的搜索方式,常借助队列实现。 ‧ 图的深度优先遍历0 码力 | 202 页 | 15.73 MB | 1 年前3
Hello 算法 1.1.0 Go版的匠人技艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 树或红黑树,从而将时间效率从 ?(?) 优化至 ?(log ?) ;还可 以把链表转换为哈希表,从而将时间复杂度降至 ?(1) 。 9.1.3 图的常见应用 如表 9‑1 所示,许多现实系统可以用图来建模,相应的问题也可以约化为图计算问题。 表 9‑1 现实生活中常见的图 顶点 边 图计算问题 社交网络 用户 好友关系 潜在好友推荐 地铁线路 站点 站点间的连通性 最短路线推荐 太阳系 星体 效率较低。 ‧ 当邻接表中的链表过长时,可以将其转换为红黑树或哈希表,从而提升查询效率。 ‧ 从算法思想的角度分析,邻接矩阵体现了“以空间换时间”,邻接表体现了“以时间换空间”。 ‧ 图可用于建模各类现实系统,如社交网络、地铁线路等。 ‧ 树是图的一种特例,树的遍历也是图的遍历的一种特例。 ‧ 图的广度优先遍历是一种由近及远、层层扩张的搜索方式,通常借助队列实现。 ‧ 图的深度优先遍历0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版的匠人技艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 树或红黑树,从而将时间效率从 ?(?) 优化至 ?(log ?) ;还可 以把链表转换为哈希表,从而将时间复杂度降至 ?(1) 。 9.1.3 图的常见应用 如表 9‑1 所示,许多现实系统可以用图来建模,相应的问题也可以约化为图计算问题。 表 9‑1 现实生活中常见的图 顶点 边 图计算问题 社交网络 用户 好友关系 潜在好友推荐 地铁线路 站点 站点间的连通性 最短路线推荐 太阳系 星体 效率较低。 ‧ 当邻接表中的链表过长时,可以将其转换为红黑树或哈希表,从而提升查询效率。 ‧ 从算法思想的角度分析,邻接矩阵体现了“以空间换时间”,邻接表体现了“以时间换空间”。 ‧ 图可用于建模各类现实系统,如社交网络、地铁线路等。 ‧ 树是图的一种特例,树的遍历也是图的遍历的一种特例。 ‧ 图的广度优先遍历是一种由近及远、层层扩张的搜索方式,通常借助队列实现。 ‧ 图的深度优先遍历0 码力 | 384 页 | 18.49 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Go 版匠人 技藝、到解放生產力的工業產品、再到宇宙運行的科學規律,幾乎每一件平凡或令人驚嘆的事物背後,都隱 藏著精妙的演算法思想。 同樣,資料結構無處不在:大到社會網絡,小到地鐵路線,許多系統都可以建模為“圖”;大到一個國家,小 到一個家庭,社會的主要組織形式呈現出“樹”的特徵;冬天的衣服就像“堆疊”,最先穿上的最後才能脫下; 羽毛球筒則如同“佇列”,一端放入、一端取出;字典就像一個“雜湊表”,能夠快速查找目標詞條。 樹或紅黑樹,從而將時間效率從 ?(?) 最佳化至 ?(log ?) ;還可以把鏈結串列轉換為雜湊表,從而將時間複雜度降至 ?(1) 。 9.1.3 圖的常見應用 如表 9‑1 所示,許多現實系統可以用圖來建模,相應的問題也可以約化為圖計算問題。 表 9‑1 現實生活中常見的圖 頂點 邊 圖計算問題 社交網路 使用者 好友關係 潛在好友推薦 地鐵線路 站點 站點間的連通性 最短路線推薦 第 9 章 低。 ‧ 當鄰接表中的鏈結串列過長時,可以將其轉換為紅黑樹或雜湊表,從而提升查詢效率。 ‧ 從演算法思想的角度分析,鄰接矩陣體現了“以空間換時間”,鄰接表體現了“以時間換空間”。 ‧ 圖可用於建模各類現實系統,如社交網路、地鐵線路等。 ‧ 樹是圖的一種特例,樹的走訪也是圖的走訪的一種特例。 ‧ 圖的廣度優先走訪是一種由近及遠、層層擴張的搜尋方式,通常藉助佇列實現。 ‧ 圖的深度優先走訪是0 码力 | 385 页 | 18.80 MB | 10 月前3
Hello 算法 1.0.0b4 Golang版(?) 优化至 ?(log ?) , 还可以通过中序遍历获取有序序列;此外,还可以将链表转换为哈希表,将时间复杂度降低至 ?(1) 。 9.1.4. 图常见应用 实际应用中,许多系统都可以用图来建模,相应的待求解问题也可以约化为图计算问题。 顶点 边 图计算问题 社交网络 用户 好友关系 潜在好友推荐 地铁线路 站点 站点间的连通性 最短路线推荐 太阳系 星体 星体间的万有引力作用 行星轨道计算 ,时间效率较低。 ‧ 当邻接表中的链表过长时,可以将其转换为红黑树或哈希表,从而提升查询效率。 ‧ 从算法思想角度分析,邻接矩阵体现“以空间换时间”,邻接表体现“以时间换空间”。 ‧ 图可用于建模各类现实系统,如社交网络、地铁线路等。 ‧ 树是图的一种特例,树的遍历也是图的遍历的一种特例。 ‧ 图的广度优先遍历是一种由近及远、层层扩张的搜索方式,通常借助队列实现。 ‧ 图的深度优先遍历0 码力 | 347 页 | 27.40 MB | 1 年前3
Hello 算法 1.0.0 Golang版树或红黑树,从而将时间效率从 ?(?) 优化至 ?(log ?) ;还可 以把链表转换为哈希表,从而将时间复杂度降至 ?(1) 。 9.1.3 图的常见应用 如表 9‑1 所示,许多现实系统可以用图来建模,相应的问题也可以约化为图计算问题。 表 9‑1 现实生活中常见的图 顶点 边 图计算问题 社交网络 用户 好友关系 潜在好友推荐 地铁线路 站点 站点间的连通性 最短路线推荐 太阳系 星体 效率较低。 ‧ 当邻接表中的链表过长时,可以将其转换为红黑树或哈希表,从而提升查询效率。 ‧ 从算法思想的角度分析,邻接矩阵体现了“以空间换时间”,邻接表体现了“以时间换空间”。 ‧ 图可用于建模各类现实系统,如社交网络、地铁线路等。 ‧ 树是图的一种特例,树的遍历也是图的遍历的一种特例。 第 9 章 图 hello‑algo.com 208 ‧ 图的广度优先遍历是一种由近及远、层层扩张的搜索方式,通常借助队列实现。0 码力 | 382 页 | 17.60 MB | 1 年前3
共 12 条
- 1
- 2













