架构

从0到100——知乎架构变迁史

落花浮王杯 提交于 2020-04-03 17:11:07
初期架构选型 在2010年10月真正开始动手做知乎这个产品时,包含李申申在内,最初只有两位工程师;到2010年12月份上线时,工程师是四个。 知乎的主力开发语言是Python。因为Python简单且强大,能够快速上手,开发效率高,而且社区活跃,团队成员也比较喜欢。 知乎使用的是 Tornado 框架。因为它支持异步,很适合做实时Comet应用,而且简单轻量,学习成本低,再就是有FriendFeed 的成熟案例,Facebook 的社区支持。知乎的产品有个特性,就是希望跟浏览器端建立一个长连接,便于实时推送Feed和通知,所以Tornado比较合适。 最初整个团队的精力全部放在产品功能的开发上,而其他方面,基本上能节约时间、能省的都用最简单的方法来解决,当然这在后期也带来了一些问题。 最初的想法是用云主机,节省成本。知乎的第一台服务器是 512MB内存的Linode主机 。但是网站上线后,内测受欢迎程度超出预期,很多用户反馈网站很慢。跨国网络延迟比想象的要大,特别是国内的网络不均衡,全国各地用户访问的情况都不太一样。这个问题,再加上当时要做域名备案,知乎又回到了 自己买机器找机房 的老路上。 买了机器、找了机房之后又遇到了新的问题,服务经常宕掉。当时服务商的机器内存总是出问题,动不动就重启。终于有一次机器宕掉起不来了,这时知乎就做了 Web和数据库的高可用。 创业就是这样一个情况

免费灾备云

荒凉一梦 提交于 2020-04-02 16:30:36
(IDC彭帅) 您企业现在的数据保护真的可控吗? 物理环境、虚拟化和云环境混合架构是否让您在越来越复杂的IT架构中,不得不放弃数据的主动控制权,在数据的使用安全问题,数据保护方面做出让步?真的没有逻辑漏洞吗? 如果您能拥有和国家重保单位一样级别的异地灾备能力,同时能存储超过6倍单位容量的数据,您会感兴趣吗? 您是否愿意在保证现在架构不变的情况下,来增加企业异地容灾能力,来确保万无一失呢? UCACHE灾备云是一种能帮您轻松实现服务器定时备份的云服务,他能满足您要求的所有应用场景,满足公有云、虚拟环境、物理环境以及私有云和混合云状态下的所有数据定时备份、恢复的任务,目前是 免费开放 UCACHE灾备云介绍 一、按需扩容、按使用计费 不同于传统的灾备方式,需要建立完整的一套架构来对应生产中心可能的故障失效。而云灾备灾备即服务的模式,允许用户将传的采购模式转化为按服务交付使用的方式,因此底层架构的成本将由其他采用同样云灾备方式的企业所分担,从而大大减少了资源的开支与浪费。 二、高度的灵活性 云灾备具有云计算的特点,高可用、高安全、易扩展、无限扩容、模块化功能、24小时运维等特点,提高的用户可选择的灵活性,企业只需要做好前期云灾备服务商的选择即可。 三、快速迭代的复制与恢复技术 云灾备厂商一直致力于云灾备的技术迭代和功能更新,在一定的程度上比企业自建在功能及技术上要投入更多的资源

专家解析:程序员到软件架构师培训与认证之路

北城余情 提交于 2020-04-02 07:41:57
如果你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,加入这个PM、架构师的大家庭 软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。 软件架构师的培养 软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。在国内,很多大学目前还没有设立软件架构的学位课程,虽然IT业界对设计和架构的兴趣日渐高涨,但各学校还无法在课程中增加相应的内容来体现这一趋势。从这个方面来说,学校教育已经远远落后于产业发展。因此,促进和发展软件架构学课程的任务将落在现在的软件架构师身上。目前的软件架构师应该帮助各大院校建立相关课程体系,一旦教育课程建立起来,知识体将不仅通过新毕业生的工作成果来得到扩展,同时也会从适合软件架构的教育研究和出版物中得到扩展。 虽然大学要加强软件架构学课程的建设,但是,软件架构师的成长应该有一个实践的教育过程,并不是简单的学校的理论学习或者通过大型软件公司的认证就能成为合格的软件架构师。除了信息系统综合知识在学校学习外,软件架构师的大部分知识和经验将来自实际开发工作。根据软件架构师的任职条件,一名合格的软件架构师的成长应该经历8年以上的软件项目开发实际工作经验。一般需要经历程序员、软件设计师等阶段,然后再发展成为软件架构师。 当然,并不是每一位程序员经过8年后都可以成长为软件架构师的

JavaWeb程序架构模式的演进

点点圈 提交于 2020-04-02 06:38:41
JavaWeb程序架构模式的演进 老一辈的程序员一般都经历了Web程序架构模式的演进,从最开始的在jsp或者jsp+Servlet上做开发,到后来的mvc、三层等。而现在有挺多人学完web,可能都没怎么使用过jsp或jsp+Servlet开发过项目,就直接学习使用Spring、Spring Boot或者SpringMVC等框架进行开发。如果没有经历这样一个逐步演进的过程,就很难理解框架带给了我们什么样的好处,而且开发过程中遇到问题也难以解决,更别说去学习这些框架中的源码了。学习是一个循序渐进的过程,不能急于求成,所以本文旨在简单的聊一聊Web的发展史。 一、web发展简史 以目前Spring Boot作为时间轴的话,web发展的过程大致可以分为以下几个阶段: 1.纯jsp / jsp+Servlet / jsp+JavaBean+Servlet 2.MVC / MVP / 三层架构 3.使用EJB进行分布式应用的开发,EJB是重量级框架,在使用上比较复杂和麻烦 4.由于EJB太重了,于是Spring应运而生,但是Spring在发展上越来越臃肿,所以还是有许多繁琐的配置 5.同样的由于String配置太繁琐,于是Spring boot诞生了,这时就可以体验到 “约定大于配置” 的乐趣 二、web发展初始阶段 1.jsp / jsp+Servlet / jsp+JavaBean

为什么超融合正在成为数据中心的主流?

久未见 提交于 2020-04-01 17:53:35
随着数据不断增长以及互联网业务的兴起,新兴应用对IT架构需求的快速变化以及不确定性成为了主要挑战,因此催生出了一种创新的架构——超融合。近年来超融合发展如火如荼,替换传统架构已势不可挡,超融合正在成为数据中心基础架构的核心。 什么是超融合? 超融合基础架构(Hyper-Converged Infrastructure,或简称“HCI)是指在同一套单元设备中不仅仅具备计算、存储、网络和服务器虚拟化等资源和技术,且多套单元设备可以通过网络聚合起来,实现模块化的无缝扩展,形成统一的资源池。 超融合架构采用类似Google、Facebook后台的大规模基础架构模式,可以为数据中心带来最优的效率、灵活性、规模、成本和数据保护。 超融合技术成熟吗? 据《Hype cycle for ICT in China 2017》报告显示,超融合系统(Hyperconverged Integrated System)位于期望膨胀期顶点附近。这预示着超融合很快将渡过概念炒作期,开始规模化推广。Gartner连续几年的技术成熟度曲线预测,在2-5年超融合将真正成为市场的主流,而在国内市场,这个速度比Gartner预期更快。另外,Wikibon连续三年的预测显示,未来公有云、私有数据中心的集中存储,将被超融合为代表的技术取代。 为什么超融合架构比传统架构好? 在互联网、云计算、大数据等新兴技术快速发展的趋势下

互联网公司分布式集群架构图入门解析(简单通俗易懂,超详细)

旧巷老猫 提交于 2020-04-01 00:06:23
互联网公司分布式集群架构图入门解析(简单通俗易懂,超详细) 置顶 2018年11月08日 09:32:44 英俊帅比林 阅读数:1769 标签: 集群 分布式 互联网架构 java 更多 个人分类: JavaWeb 一、小型公司网络架构 狗子是某大学计算机专业本科应届毕业生,由于自己的技术不错,再加上互联网产业的巨大利润的驱使,狗子决定走上创业这条路,于是,狗子联合了同学二黑,鸡子,狗蛋等人花费了几个月的时间写出了一套网站,是关于足球资讯的pc端网站加上手机APP客户端。现在产品测试成功了,准备发布了,狗子想到了两个问题: 1.网站需要服务器 狗子之前所有的代码测试都是在本地服务器或者局域网上进行的,现在需要把产品发布到外网上,让所有的人都能访问,因此再用自己的电脑当服务器显然很不现实,于是,狗子去买了一台服务器,在上面装了jdk,tomcat,mysql等必备环境,把网站搭了起来,又经过了很多测试,运行毫无问题了,通过网站的ip可以访问并且实现功能了,而且app的后台也在服务器上测试成功了,目前公司的架构如图所示: 那么问题又来了: 2.网站需要域名 显然,如果让各地的用户需要记住你服务器的ip地址才能访问你的网站的话,那是会被用户拿刀追着砍的。因此,狗子需要一个便于记住的域名,以后在浏览器输入这个域名就能够访问这个网站,所以,狗子拿着申请下来的各种资质,找到了域名贩卖商

“微信支付”的架构到底有多牛逼?看完这篇你就明白了!

戏子无情 提交于 2020-03-31 21:06:30
点点这个链接免费获取:本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ 背景 作为一个重要业务,微信支付在客户端上面临着各种问题。其中最核心问题就是分平台实现导致的问题: iOS 和安卓实现不一致 容易出 Bug 通过沟通保证不了质量 扩展性差,无法快速响应业务需求 需求变更迭代周期长 数据上报不全面 质量保障体系不完善 缺少业务及设计知识沉淀 协议管理松散 缺少统一的自动化测试 用户体验不一致比如下图就是之前安卓和 iOS 没有统一前的收银台。 为了解决分平台实现这个核心问题,并解决以往的技术债务。我们建立起了一整套基于 C++ 的跨平台框架,并对核心支付流程进行了重构。 微信支付跨平台从 iOS 7.0.4 版本起, 安卓从 7.0.7 版本起全面覆盖。 线上效果指标 以 iOS 上线情况为例: Crash 率上线前后 Crash 率保持平稳,没有影响微信稳定性,跨平台支付无必现 Crash,做到了用户无感知切换。举个例子,大家可以用微信发一笔红包,拉起的收银台和支付流程就是由基于C++编写的跨平台代码所驱动的。

[转帖]有问有答 在处理器中拥有多个内核有什么好处?

别等时光非礼了梦想. 提交于 2020-03-31 08:13:53
有问有答 在处理器中拥有多个内核有什么好处? https://www.expreview.com/69110.html 某日Intel和AMD发现了单核处理器是有极限的,然后他们都不做单核了开始了多核处理器的道路,实际上到了现在单核处理器基本在PC和手机领域消失了。单核处理器:明明……明明是我先来的,但……为什么会这样呢? 16核32线程的处理器都要进入主流市场了 其实说白了就是想做一个超强的单核处理器难度实在是太高了,想提升处理器的单核性能无法就两条道路,一是通过架构的改良提升处理器IPC,二是直接提升处理器的频率。架构的改良需要大量的时间和资源投入,别看现在Intel和AMD一年弄一个新架构出来,实际上他们大部分时间都是在原有架构上小修小改来提升性能,这样不但更容易更快速,而且不容易翻车。架构的大改虽然可能带来较大的性能提升,但是也有时会弄出不适合的产品而大溃退,较好的正面例子就是Intel的Core、Sandy Bridge和AMD的Zen架构,而反例则是Intel的奔腾4和AMD的推土机处理器。 而想提升处理器的频率也不是简单的事情,处理器的频率不单止和架构有关,和所用的制程工艺的关系更大,实质上是摩尔定律已经失效了,这个影响了半导体行业50年的金科玉律随着硅基芯片物理极限的到来已经失效了,从28nm节点之后其实就没有带来很大的性能改进了,而且功耗问题也越来越严重。

英特尔公司

匆匆过客 提交于 2020-03-31 06:39:30
英特尔公司(Intel Corporation)(NASDAQ:INTC,港交所:4335),总部位于美国 加州 ,工程技术部和销售部以及6个芯片制造工厂位于 美国 俄勒冈州波特兰。 英特尔 的创始人罗伯特·诺伊斯 Robert Noyce 和戈登·摩尔 Gordon Moore 原本希望他们新公司的名称为两人名字的组合——Moore Noyce,但当他们去工商局登记时,却发现这个名字已经被一家 连锁酒店 抢先 注册 。不得已,他们采取了“Integrated Electronics(集成电子)”两个单词的缩写为 公司 名称。现任CEO是Brian Krzanich 。 英特尔公司在随着个人电脑普及,英特尔公司成为世界上最大设计和生产半导体的科技巨擘。为全球日益发展的计算机工业提供建筑模块,包括 微处理器 、芯片组、 板卡 、系统及软件等。这些产品为标准计算机架构的组成部分。业界利用这些产品为最终用户设计制造出先进的计算机。英特尔公司致力于在客户机、 服务器 、网络通讯、互联网解决方案和互联网服务方面为日益兴起的全球互联网经济提供建筑模块。 具体研究领域包括音频/视频 信号处理 和基于PC的相关应用,以及可以推动未来微结构和下一代 处理器 设计的高级 编译技术 和运行时刻系统研究。另外还有 英特尔 中国软件实验室、英特尔架构开发实验室、英特尔互联网交换架构实验室

云时代架构阅读笔记十三——技术三板斧:关于技术规划、管理、架构的思考

拥有回忆 提交于 2020-03-31 05:51:33
由标题可知,技术三板斧是:技术规划、管理和架构。 对于技术规划三板斧,想做好技术规划,需要做到以下三方面的内容: 一是全局分析,这需要溯源历史,思考未来,要对未来有一定的预判。能够基于数据,基于专业,基于客户价值,同时结合顶层的战略、公司的战役情况和组织的现状做分析。 二是定目标。这一部分非常关键,定义好目标以及非目标,哪些事情是不要做的也要讲明白,并且确认目标的实现路径,做好拆解。 三是以终为始,从最终结果的角度,来溯源开始。从技术支撑业务发展、平台能力输出或者赋能、平台研发效能以及技术数据驱动业务等不同的角度审视结果。 关于技术管理三板斧,这里的管理,不是团队管理,是指技术本身的管理。这又提出了三点建议: 首先,把控核心细节。 软件工程这些年,本质是没变的。不管是偏互联网的部分还是偏企业级的部分,关键细节是需要严格把关的。 另外,就是数据化度量。 通过数据驱动研发体系的重建,通过质量风险文化的宣导以及核心指标的跟进,起到督导的作用。 最后,就是清单革命。 清单革命是一本书的名字,这里借用过来,合适是 checklist,不管是代码规约、应用规范还是稳定性治理等,都容易由于不重视或者不 check 而逐渐孵化。这时候,一个好的 checklist 非常关键重要。 关于技术架构三板斧,有如下建议: 第一,是多元多维。 这个概念来自穷查理宝典,因为架构需要良好的上下文输入