架构师

每个架构师都应该研究下康威定律

纵饮孤独 提交于 2020-03-02 07:31:31
摘要: 这篇文章的分享者杨波具有超过10年的互联网分布式系统研发和架构经验,曾先后就职于 eBay 中国研发中心(eBay CDC)、携程、唯品会(VIPShop)等。本文由攀爬的蜗牛以及田光整理。   今天的分享主要来自我之前的工作经验以及平时的学习总结和思考。我之前的背景主要是做框架、系统和平台架构,之前工作过的公司 eBay、携程、唯品会都是平台型互联网公司,所以今天主要带着平台架构视角和大家分享心得体会。架构的视角每个人都不一样,可以说一万种眼光,有业务架构、安全架构、平台架构、数据架构,各不相同,这里仅是我的一家之言,欢迎大家加入『聊聊架构』社群参与讨论。今天聊的话题主要包括以下几点: 我对架构定义的理解 架构的迭代和演化性 构建闭环反馈架构(Architecting for closed loop feedback) 谈谈微服务架构和最新主题 架构和组织文化关系 架构师心态和软技能 我对一些架构师争议主题的看法    我对架构定义的理解   大概在7~8年前,我曾经有一个美国对口的架构师 mentor,他对我讲架构其实是发现利益相关者(stakeholder),然后解决他们的关注点(concerns),后来我读到一本书《软件系统架构:使用视点和视角与利益相关者合作》,里面提到的理念也是这样说: 系统架构的目标是解决利益相关者的关注点。   这是从那本书里头的一张截图

技术人员如何成长

本小妞迷上赌 提交于 2020-03-02 00:58:24
很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职业生涯,有所帮助。 1. 刚接触编程的时候,会觉得这是个很神奇东西,平淡的英文字母,再加上标点符号,竟然可以有这么大魔力。会觉得编程是很有自豪感的事情,因为在我们看来,它就是在创造,用这些跳动的字符,创造我们想要的效果。 我当时第一次看到编程的时候,就是这种感觉,我也不知道它是什么,如何做到的,但是就是感觉这很神奇,是一种不懂但是觉得很酷的感觉,然后就会着迷,开始想学。 2. 开始学编程的选择,是没有选择的,因为什么都不懂,可能最先从哪里看到的,就模仿学什么,然后就走上了编程之路。 我最先接触的语言是Pascal语言,当时我不知道它是什么,只知道它叫这个名字。这门语言是在高中的时候,计算机书本上的,我学了一些,与其说是学,还不如是记,因为我没有练过,没有运行过。 3. 走上了编程之路后,学习得方式主要看语法,这个是为了入门,但是并不太知道为什么会这样,但是能用,能模仿,这时候算是入门了。 入门后,会迫不及待的,使用实验各种效果,而且这些结果可能都不是自己写出来的,因为入门了,环境可以搭建,会运行,就会从很多地方拷贝一些代码,运行试试,然后感受成功后的自豪感。 我真正做出来东西的语言是VB,可以通过拖动生成界面

淘宝平台架构师谈海量互联网服务技术架构(转载)

孤街醉人 提交于 2020-03-01 12:25:32
林昊,网名BlueDavy,China OSGi User Group Director,淘宝网 平台 架构部架构师,个人的研究方向主要为 Java模块化、动态化 系统 的构建以及高性能的大型分布式Java系统的构建。曾编写《OSGi实战》和《OSGi进阶》两篇Opendoc,为OSGi 在 中国 的推广起到了很大的作用。 1 U: @% ~8 @* M2 \7 @4 L7 G 王速瑜: 数据 集群问题:当数据增长到一定的数量级,必须要进行分布部署、备份、容灾、切割扩容等工作。请问什么程度的数量级需要分布部署,如何合理分布部署,需要考虑哪些情况? $ n9 c1 m0 H: y" `0 A I5 b; G4 E# J0 k 林昊: 一般来说,也没有固定的数量级,通常是根据硬件资源的状况以及所能接受的性能状况(例如一次查询必须在 3ms内完成)来决定。当达到性能瓶颈时,通常需要进行数据的拆分或备份等策略,在这个过程中最需要考虑的,就是对 应用 的影响程度,因此通常会需要一个强 大、透明的数据层,以屏蔽数据的拆分或备份、迁移操作给应用带来的影响,另外一方面就是应尽量能做到不停机完成。当然,这很难,因为需要面对多套数据结构 并存、数据冗余和同步等问题。 ; v4 W8 Q. G% t: { 王速瑜: 数据备份问题:对于大容量的数据备份, 技术 上如何做到不影响正常的 服务

如何从代码层防御10大安全威胁中的 Xpath Injection?

佐手、 提交于 2020-03-01 03:55:52
普遍性和可检测性: Xpath 注入是 OWASP TOP10 安全威胁中 A1 Injection 中的一种,注入漏洞发生在应用程序将不可信的数据发送到解释器时。虽然注入漏洞很容易通过审查代码发现,但是却不容易在测试中发现。 影响严重: 注入能导致数据丢失或数据破坏、缺乏可审计性或者是拒绝服务。注入漏洞有时候甚至能导致完全主机接管。 从代码层次如何防御: 首先我们先来看一下在 Java 中引用 xpath 需要用的 lib 库: javax.xml.xpath org.jdom.xpath org.jdom2.xpath等 那么xpath注入是从哪些途径进入到代码逻辑的呢?大家仔细思考一下无外乎三个途径: cookie 、 header 、 request parameters/input 。如果我们能对这三个注入源头进行严格得入参检查是否就能够防御绝大部分的注入攻击了呢? 答案是可以防御大部分注入攻击,下面我们就一起来看一下如何进行有效得进行入参检查: 我们将入参都转化为 Map 对象, Map<K, Collection<V>> asMap() ; 然后通过CheckMap( finnal Map<String, String> params )方法,检查入参是否合法。 下面我们来实现这个CheckMap内部方法: 1. 通过遍历检查Map中key得合法性 for

普通程序员通向架构师的最佳路径?

人盡茶涼 提交于 2020-02-29 09:47:15
互联网的蓬勃发展,让无数的「屌丝」程序员在一夜之间,仿佛都变成了「香饽饽」。但是,没有几个做开发的同学真的想做一辈子「码农」,很多同学都希望当上CTO,最终迎娶「白富美」,从此过上幸福美满的生活。 诚然,CTO 的路不是那么好走的,而其中最重要的先决条件就是你要先成为一名优秀的架构师,那么普通程序员如何才能成为架构师呢?让我们听听移动开发精英群里,这些国内顶级的大牛怎么说!本文系 OneAPM 市场部王鹏整理。 三生社群副总裁,ThinkPHP核心开发者罗飞总结: 程序员可能的发展路线是什么? 先说说这张图,它几乎表示出了一个程序员可能走的所有职业路线。 当我们刚开始还是个初级开发的时候只能把自己变成高级,开发者才能有更多的选择。你可以选择管理线、专家线或者小老板线。(图有四个象限,x轴代表金钱, y轴代表时间。) 我们学习知识的路线是: 技术->技术+管理->技术+管理+商业。但是随着阶段不一样,我们学习的知识也有不同,刚开始我们只做开发,只需要学习技术知识就行了,后面我们做到了管理职位,不仅要懂技术还要学习管理知识,然后我们想要成为CTO\CEO或小老板,必须得学习一些商业知识才行。 想成为架构师,你需要经历3个阶段的磨练! 从技术上来讲,要成为高级工程师或架构师,我认为可能需要经历3个阶段: 实现->借鉴->优化。 第一个阶段: 实现 在这阶段我们只在乎功能的实现

架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结

馋奶兔 提交于 2020-02-28 18:42:02
作者 | 刘军(陆龟)Apache Dubbo PMC 本文整理自架构师成长系列 2 月 18 日直播课程。 关注“阿里巴巴云原生”公众号,回复 “218” ,即可获取对应直播回放链接及 PPT 下载链接。 导读 :Apache Dubbo 是一款开源的 RPC 框架,其提供了简单易用、高性能的 RPC 能力、灵活可控的扩展、强大的服务治理,目前已有 Java、Go、JS、Python 等多个语言支持;并且已经悄然衍进为 Cloud Native 基础设施。这一切成就都离不开 Dubbo 社区的建设,本文将由 Apache Dubbo PMC 刘军来介绍 Dubbo 社区在过去的一年取得的成绩及未来 Dubbo 社区的发展新规划。 非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将: 总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面; 展望未来 Dubbo 社区和框架的新的规划(roadmap)。 社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优化等多个方面;除了已经发布的功能外,我们在 Dubbo

你为什么当不了架构师?除了技术,你还需具备这些能力

那年仲夏 提交于 2020-02-28 17:12:13
为什么人人都想成为架构师?不外乎这几点:能力强,工资高,有底气。但是有80%的程序员是成不了架构师,这说明架构师的稀缺性。今天就带你走进架构师世界,帮助你更好了解什么是架构师必备技能。 架构师需具备的特殊能力? 想要成为一名架构师,必须具备快速解决系统故障的能力,和可以在项目中做到统筹兼顾。因此,在技术要求方面,像Linux/ WebServer(Apache或Nginx)/ MYSQL 等基础服务的配置,优化和故障排查,根据不同的环境和要求,需要具备更多的如Memcached,NOSQL, 等服务的配置、优化和故障排查。都需要掌握和理解。除此之外,必须精通至少一门语言,如 PHP。掌握其他一些数据分析和日志分析的能力。 到了架构师这一层面,要做的是解决现实碰到的问题,包括技术的问题,产品的问题,实现系统性能的最优化,系统稳定性的保障等。此时衡量一个人的能力,不是能写多少代码,实现多少种算法,而是是否能用最快速的方法,有效地解决当前的需求或故障。 技术不是唯一? 有一定经验的程序员都清楚,在工作中必须要有强大的自学能力,没有人会手把手的教给你所有的东西。很多技术都是自己摸索学习,想成为架构师不是懂了一大堆技术就可以。技术只是解决问题的基础、是工具,它只是帮助程序员在遇到问题时懂得如何提解决方案。 我们要明白,架构师是做什么? 首先,出具针对性解决方,即“1+1=2”。针对业务特点

架构师成长系列 | 从 2019 到 2020,Apache Dubbo 年度回顾与总结

夙愿已清 提交于 2020-02-28 14:10:03
作者 | 刘军(陆龟)Apache Dubbo PMC 本文整理自架构师成长系列 2 月 18 日直播课程。 关注“阿里巴巴云原生”公众号,回复 “218” ,即可获取对应直播回放链接及 PPT 下载链接。 导读 :Apache Dubbo 是一款开源的 RPC 框架,其提供了简单易用、高性能的 RPC 能力、灵活可控的扩展、强大的服务治理,目前已有 Java、Go、JS、Python 等多个语言支持;并且已经悄然衍进为 Cloud Native 基础设施。这一切成就都离不开 Dubbo 社区的建设,本文将由 Apache Dubbo PMC 刘军来介绍 Dubbo 社区在过去的一年取得的成绩及未来 Dubbo 社区的发展新规划。 非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将: 总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面; 展望未来 Dubbo 社区和框架的新的规划(roadmap)。 社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优化等多个方面;除了已经发布的功能外,我们在 Dubbo

神级Android大牛应该具备的27类技术知识点及对应薪资范围

浪尽此生 提交于 2020-02-27 17:06:02
Android 开发应该学习什么技术才能成为大牛?做 Android 开发的同学应该都知道,Android 涵盖的知识面实在太多太杂,让学习 Android 开发的人有点二和尚摸不到头脑的感觉,学习了很久也不清楚自己的水平到底离大牛还差多远。 如果您觉得文章有用,请帮忙点个赞或关注,也为我鼓励一下,坚持写下去! 最近闲下来没事仔细思考整理了一个大牛 Android 到底应该会哪些技术。 让你对自己目前拥有的技术能力对应社会薪资价值有一个清楚的参照 。同时也对 Android 开发宏观整理一下知识类别,有的同学东学一点西学一点,知识不能够成体系发展。 看完这篇文章以后你会清楚的知道以后再学的任何 Android 开发技术知识是弥补了你的哪部分技术空白。 神级 Android 开发大牛应具备27类技术内容,全部掌握可以横行天下。 初级 Android 开发需要掌握的技术: 初级研发工程师的定义是掌握基础的Android知识,能够独立完成一个功能,工作年限大概在1-2年,这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。这个级别的人往往需要掌握如下一些技能: 掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。 掌握Android 基本布局和控件的属性和使用

[职场]技术人员的职业规划

╄→尐↘猪︶ㄣ 提交于 2020-02-26 16:48:26
昨天,邀请了一位 专业人士 来公司给大家作了一个职业规划的分享,效果非常好。一方面,系统的梳理了一下职业规划的方式方法,另外一方面创造了一个非常好的交流机会,让大家把平时憋在肚子里话讲出来。   就现场的一些感受,谈谈自己的想法。 大家的困惑主要来自于两个方面: 1、如何选择一个适合自己的方向 2、如何“立足于现状”达到目标职位的“实际要求” 我们分别展开。 一、如何选择一个适合自己的方向   首先,对于技术人员来说,典型的发展方向就两个:技术路线和管理路线。   技术路线:工程师-架构师…科学家   管理路线:工程师-项目经理-部门经理…首席技术官       各个企业可能因为自己的业务特点,进行大同小异的调整,比如我们公司是这样的:    技术线:工程师-高级工程师-架构师-高级架构师-资深架构师…   管理线:工程师-高级工程师-项目主管-项目经理-部门经理…   因为我们是技术类的工种,不管是技术线还是管理线, 共同的要求是起码是一位优秀的工程师 ,然后才去考虑发展路线的问题。为什么呢?因为考虑的太早,跟没考虑一样。让一位初入职场的人来做职业规划,基本上还是处于理论上的假想而已,很难落地的,因为那时你 还不曾感知这个社会中看不到的却存在的种种限制,更重要的是你根本不了解作为一位职业人的自己 。所以,我们至少需要两三年的时间,去亲自感受一下职场,感受一下职场中的自己