敏捷开发

TiDB 在北京银行交易场景中的应用实践

不打扰是莪最后的温柔 提交于 2020-10-21 14:13:28
作者介绍:陈振东,北京银行软件开发部 北京银行是一家城市商业银行,公司价值位列中国区域性发展银行的首位,依托于中国经济的大环境,北京银行的资产总量在全球千家大银行中名列第 61 位,连续六年跻身全球银行业百强。北京银行积极开辟多元化的业务经营,例如北京地区的社保缴纳和医保代发,都是由北京银行在提供服务,在你入职一家公司的时候,收到的医保折子就是来自北京银行。 业务转型驱动分布式架构建设 由于快速的业务发展需求,北京银行在业务转型中对系统架构进行了升级,逐渐向分布式架构进行转移。早在 2016 年,北京银行就开始了对分布式数据库的探索,并于 2018 年正式投产上线了 TiDB 分布式数据库,当时在业内还没有一个比较完善与成熟的体系,我们也是根据银行的安全合规需求建设了两地三中心的部署方案。 如上图所示,在两地三中心部署了 TiDB 分布式数据库集群,采用主从的多活架构,主集群作为生产集群承担日常的生产服务,从集群是建设在西安的异地灾备中心,主从之间是用 Kafka 同步 Binlog 形式进行数据的同步。 在这两年的建设过程中,北京银行与 PingCAP 进行专项的深度合作,这里简单介绍三个方面: 两地三中心 :在两地三中心的部署方案中,异地中心的网络延时会对整个集群的性能产生较大影响,我们在这层面上对 gRPC 的消息格式进行了压缩,同时利用 Multi-Raft

2020,测试生涯该如何转型升级?

谁都会走 提交于 2020-10-13 04:28:48
所有的测试从业人员都想从业务测试转型成长为测试开发工程师,因为这是一个门槛,一种层级,一个上升自我,提高个人价值的重要驱动力。 测试开发工程师是一个交又工作的角色。与开发工程师相比,测试开发工程师除了要具备写代码的能力,还需要掌握操作系统、数据库、网络、软件测试等相关领域的知识。与业务测试工程师相比,测试开发工程师拥有编写测试脚本、设计测试框架、搭建测试平台、维护测试环境等技能,但是可能没有业务测试工程师那种专业的业务知识背景。测试开发工作,本质就是为了保证测试能够正确且顺利进行而做的工作。测试开发要服务于业务测试,测试开发不是脱离业务而单独存在的。在软件系统生命周期过程中,业务测试工程师和测试开发工程师是并存的,并不会彼此替代。 那么,你为转型做好准备了吗? 1.2业务测试的挑战 1.2.1测试人员的挑战及新要求 在固定时间内快速迭代,进行高并发任务测试一直都是测试人员和测试团队所面临的挑战。除此之外,他们还要应对不断变化的用户需求,同时整个行业内开发人员和测试人员人数比例不平衡,传统测试之外的任务缺乏明确的方向和职业发展路径等,这些都是测试人员面临的问题。业务的多元化,以及公司战略调整和整个行业的不断发展,要求测试人员具备越来越多的技能,其承担的责任也就越来越大传统测试的角色已经无法满足工作的需要,同时测试人员也希望变得比以往更具技术性

提问回顾与个人总结

删除回忆录丶 提交于 2020-10-12 04:05:42
项目 内容 本作业属于北航 2020 年春软件工程 博客园班级连接 所属教学班 006 本作业是本课程最后一次个人作业 作业要求 我在这个课程的目标是 收获团队项目开发经验,提高自己的软件开发水平 对应的博客 博客链接 这个作业在哪个具体方面帮助我实现目标 回顾整个学期的软件工程课程学习历程,总结经验 回顾问题 是否需要一个中间人作为软件工程师与用户之间的沟通桥梁 在 2.3 节中,作者列出了大学四年级生与有经验的软件工程师的个人开发流程对比数据,其中可以注意到,软件工程师对于需求分析更为重视。对此,我有一些想法。 需求分析是连接用户和开发者的重要桥梁,但是用户和开发者对于需求的着重点可能会有区别。因此,是否需要一个中间层帮助用户和开发者更好地完成需求分析,换言之,将需求分析的任务从软件工程师中剥离出来,让中间层作为这一环节的主要负责人,软件工程师以协助的身份参与到需求分析中。 实际上,这一角色一般是由产品经理充当的,由产品经理负责市场调查并根据用户需求决定开发的内容。当然,产品经理的职责一般不仅于此,往往在产品整个生命周期中都有相关的任务。 然而在第五章关于流程等部分又提到了瀑布模型、瀑布模型的各种变体、统一流程(RUP)等。在瀑布模型中,各步骤是可以进行回溯的;在RUP中,需求分析、设计、实现、测试、部署工作流又渗透到了初始、细化、构造、交付四阶段中。 这看起来有些矛盾—

架构制图:工具与方法论

爷,独闯天下 提交于 2020-10-10 12:34:01
简介: 软件工程也是工程,因此传统工程制图的一些基本理论,在软件行业同样适用。但另一方面,软件与实体制造业之间还是有着本质区别,所以在制图方面的需求和方式也大相径庭,无法直接套用。作为软件行业的从业者,你可以完全不懂工程制图,但你不得不懂架构制图 —— 这是任何程序员职业生涯的的必修课。 作者 | 楚衡 前言 “架构制图”这词乍一听似乎有些晦涩,但如果提起“工程制图”,相信绝大部分工科背景的程序员们都不会陌生,甚至还能共同感慨下那些年一起伏在宿舍左手圆规,右手直尺,徒手作图到深夜的日子。 软件工程也是工程 ,因此传统工程制图的一些基本理论,在软件行业同样适用。但另一方面,软件与实体制造业之间还是有着本质区别,所以在制图方面的需求和方式也大相径庭,无法直接套用。作为软件行业的从业者,你可以完全不懂工程制图,但你不得不懂架构制图 —— 这是任何程序员职业生涯的的必修课。 本文在后半段将介绍如何用图去 描述 (describe)和 传达 (communicate)你的架构设计。值得强调的是,本文并不会侧重于单一的方法和工具,而是更希望关注那些优秀方法背后的通用方法论,即架构制图的 本质 、 共性 和 最佳实践 。希望本文能起到引子作用,激发大家对自己日常工作中关于架构和制图部分的关注、审视与思考;如果还真能帮助大家提升一点点制图效率和效果,那就更好不过了。 什么是软件架构? 1.

代码设计敏捷开发三部曲

穿精又带淫゛_ 提交于 2020-10-10 08:35:53
一、 敏捷开发 与MVP 1.mvp MVP(minimum viable product)概念,意即“最简可行产品”——用最快、最简明的方法建立一个可用的产品原型,这个原型要表达出你产品最终想要的效果,然后经过迭代来完善细节 从现在灵敏开发的角度来讲,这是快速迭代产品的最最好方法之一便是mvp,不求大而全。 2.灵敏开发三部曲:《规划形式》-> 《重构》-> 《重构与形式》。也便是规划->重构->重构出新规划。 《规划形式》首要具体阐明20几种形式,为咱们带来了常见规划问题的经典解决方案,然后改动了整个面向对象开发的相貌。为规划而著。 《重构》改善既有代码的规划,总结了咱们会用到的各种重构方法,为咱们带来了一种改善代码的高效过程,然后彻底改动了面向对象规划的方法。侧重去除坏代码的滋味。 《重构与形式》是规划形式相关的重构。形式不是规划出来的,是重构出来的。好的规划也不是规划出来的,是重构出来的。不要怕改动,只需改动得法,变就不再是灾难,而是前进的良机。侧重规划形式+重构手法。 在阅览重构与形式之前,最好熟读前面两本:《规划形式》和《重构》。 规划形式代表了传统的软件开发思维:好的规划会发生好的软件,因此在实践开发之前,值得花时刻去做一个全面而细致的规划。重构代表了灵敏软件开发的浪潮:软件并不是在一开端就能够规划得白璧无瑕的,因此能够先进行实践开发

微服务架构理解[架构图]

て烟熏妆下的殇ゞ 提交于 2020-10-10 00:24:52
微服务架构 概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。 本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。 基于微服务架构的设计: 目的:有效的拆分应用,实现敏捷开发和部署 微服务的具体特征 官方的定义: 1、一些列的独立的服务共同组成系统 2、单独部署,跑在自己的进程中 3、每个服务为独立的业务开发 4、分布式管理 5、非常强调隔离性 大概的标准: 1、分布式服务组成的系统 2、按照业务,而不是技术来划分组织 3、做有生命的产品而不是项目 4、强服务个体和弱通信( Smart endpoints and dumb pipes ) 5、自动化运维( DevOps ) 6、高度容错性 7、快速演化和迭代 为了更好地理解微服务和设计微服务架构,列出几个比较经典的设计图辅助理解: 来源: oschina 链接: https://my.oschina.net/u/4273871/blog/4437241

无接触,云办公!5天完成手机淘宝新版本迭代,揭秘阿里工程师协同研发“神器”

强颜欢笑 提交于 2020-10-09 06:05:05
2020年注定是不平凡的一年,一场突如其来的新型冠状病毒在全球肆虐,部分企业还在复工的路上稳阵脚、备粮草、找契机,“静候”复工的号令,而阿里的同学早已吹响了“无接触,云办公”的号角,全面启动远程研发协同办公的硬核“神器”——“移动研发平台EMAS”。 “云办公”让企业向移动化转型升级迎来一场实战考验,对于多数传统企业而言,需求沟通、研发效率、测试保障、发布质量、运维稳定、运营分析等各个环节都充满了挑战。阿里的同学亮出“云办公”高效率、协同化、流程化的“杀手锏”,利用移动研发平台EMAS助力远程研发协同,仅用5天时间便完成手机淘宝“三八国际女王节”新版本全链路发布。“居家办公”也能如此高效?经过复盘与梳理,深度揭秘手机淘宝新版本开发流程,探索阿里工程师在这5天“云办公”中的速度与激情。 2月25日:远程研发,只需1天 许多业内小伙伴开启远程研发办公后惊呼:一线上,全乱了。而阿里工程师仅用1天的实践就证明了移动研发平台EMAS的强大功能和硬核技术。 视频晨会,产品经理“淘小二”完成需求部署,客户端开发“叮叮”同学便迅速开启手机淘宝“三八国际女王节”版本视频直播模块功能开发。在移动研发平台EMAS上新建项目、添加模块、输入代码、构建手机淘宝客户端,最后扫码安装、自测验证,整个流程规范而高效。与此同时,系统配置的自动化测试流水线也开始默默运行起来。

The Overview of KubeSphere 3.0

筅森魡賤 提交于 2020-10-07 05:18:21
在 KubeSphere 3.0 里我们完成了很多对企业用户重要的特性,本文将从基础设置、运维、应用开发与管理、生态及混合云场景等多个层面给大家带来分享,也欢迎大家使用并反馈。 数字化转型的核心是快速向市场交付产品、服务和价值,一套能够承载企业核心应用敏捷开发和灵活运营的基础架构至关重要。混合云使企业在基础架构的敏捷性和可靠性、经济性和安全性之间得到平衡,成为越来越多企业数字化转型基础设施的选择。 2020 Flexera™STATE OF THE CLOUD REPORT 随着数字化竞争加剧,企业需要将更多的精力从基础设施中解放出来,投放在核心应用上。同时,云原生的到来促使混合云容器化——基于容器标准化封装解除应用运行环境与混合云异构基础设施的耦合,使企业更易于实现敏捷开发和持续交付。然而,在企业生产中,这些远远不够,例如: 如何将应用跨平台进行统一分发和运维管理? 在容器混合云中部署应用,如何实现多区高可用? 运维如何简化以满足 DevOps 下的应用快速交付? 本次 KubeSphere 3.0 重磅发布,以上问题迎刃而解,为企业带来可落地的容器混合云解决方案,助力企业在数字化转型中快人一步。 KubeSphere 是基于 Kubernetes 构建的多租户、多集群、企业级开源容器平台,具有强大且完善的网络与存储能力,并通过极简的人机交互提供完善的多集群管理、CI/ CD

.Net微服务实战之DevOps篇

北城余情 提交于 2020-10-07 04:24:00
技术只是基础   该系列的两篇文章《 .Net微服务实战之技术选型篇 》和《 .Net微服务实战之技术架构分层篇 》都是以技术角度出发描述微服务架构的实施。   如果技术选型篇叙述的是 工具 ,那么架构分层篇讲的就是 技巧 ,而本篇要讨论的就是 原则 。一直以来我会给身边向我探讨问题的人灌输一种理念,没有什么技术银弹,因为我们做的是软件工程,提供的是问题相应的解决方案,不同类型问题的解决方案是存在着本质上的差异。   继续提供之前的源码:https://github.com/SkyChenSky/Sikiro PS:该篇文章与.Net无关,其实主要是沿用前面两篇文章的命名,此外我认为DevOps不是简单的工具使用,应从软件工程角度进行出发。 什么才是优秀的架构设计?   曾经有好几个同行问过我同一个问题:什么才是优秀的架构设计?我一直信奉着 两句话 和 一个定律 : 架构服务于业务,技术服务于架构 康威定律(简单理解成组织架构的设计等同于系统架构的设计)    架构设计 其实就是一种 方案 的 取舍 ,在 有限 的 资源 里(包括但不限人力、时间)能让 团队 顺利的实施技术,同时满足 业务规模 的需要,我认为可以称之为优秀的架构设计,简单来说两个字 合适 架构核心要素   核心的主要5大: 性能、可用性、伸缩性、扩展性、安全性 。   而我们所讨论的微服务,选择了扩展性

人生感悟与心得

青春壹個敷衍的年華 提交于 2020-10-06 12:17:05
  圣殿骑士自从入住博客园和51CTO写技术博客以来收获颇多,在这个过程中既对技术有了新的收获,同时也认识了很多朋友。之前由于工作和项目需要,所以对一些技术进行了较为深入的研究,在整个公司做过一些技术专场的培训(如“OO到设计模式”、“WCF基础到企业应用”、“WPF基础到企业应用及优化”、 “Silverlight基础到企业应用及优化”等),所以在写博客的时候也比较循规蹈矩,大家可以看到WPF系列基本就是按照培训的格式书写,只是比培训说得要深入一些。虽然写技术博客在某种程度上弥补了培训的不足,但同时也是一项非常耗费时间和精力的事情,有很长一段时间都在断断续续的延续这份激情。   总结一下,最近文章进度缓慢最主要原因应该归功于以下两个方面: 1,自己经不起诱惑,在忙着为出版社写书,不过写了很久才写三章,综合发现写书是一个良心活。要想写得一般比较容易;要想写得深入浅出确实需要花费很大的时间和精力;经过慎重思考,还是决定先缓一缓写书的进度,继续为大家书写一些技术相关的文章,分享一些自己浅薄的心得,希望能在帮助他人的同时也能提高自己! 2,由于自己比较懒,没事的时候也会享受一下生活,毕竟除了技术以外,身边还有很多重要的事情需要我们去关注。人生应该在忙碌的时候懂得放松,在压抑的时候应该让自己多一些期盼!生活本来就是让自己过得快乐,没有必要活的那么累,人生本来就很短暂