精华内容
下载资源
问答
  • 互联网公司组织架构

    2018-02-22 12:38:04
    简述最新流行的互联网组织架构!简述最新流行的互联网组织架构
  • Google、Facebook、eBay、Amazon、阿里、百度、腾讯等头部互联网公司的技术架构设计方案合集
  • [安全管理]架构里看安全_-_互联网企业安全架构之思考 数据安全 移动安全 云安全 数据分析 访问管理
  • 一线互联网公司架构实践

    千次阅读 2015-12-07 14:43:31
    航天信息股份有限公司高级架构师范刚:在互联网+的时代,该如何应对系统变革 来自航天信息股份有限公司的范刚分享了在多年实践中对于系统改造重构的总结与思考。在互联网+的背景之下,很多架构师们面对的是层出不穷...

    航天信息股份有限公司高级架构师范刚:在互联网+的时代,该如何应对系统变革

    来自航天信息股份有限公司的范刚分享了在多年实践中对于系统改造重构的总结与思考。在互联网+的背景之下,很多架构师们面对的是层出不穷的需求、不断更新迭代的新技术以及满身补丁,让开发运维无比头大的老旧系统。是继续缝缝补补还是推倒重来?何去何从,范刚给出了渐进式改造、优化与维护并行,平台与重构并重的答案。很多老旧系统都面临着体系老旧,业务繁杂,代码耦合度高的问题,所谓的渐进式改造,就是在保持系统功能不变的情况下,将业务领域层和技术支撑平台解耦,并实现业务领域层的模块化,最终”像更换零件一样更新系统”。在实际的生产环境中,在进行系统改造的同时,必须满足新的业务需求,对于这个问题范刚给出的经验总结是优化与维护并行:由改造组进行系统优化,维护组满足业务需求,系统优化跟随业务版本上线,快速迭代小步快跑,便于系统优化阶段性效果的验证,也可以有效避免大版本切换的系统性风险。而平台与重构并重是技术支撑平台和业务领域层的优化同时展开,平台组完成技术架构的调研选型、基础平台、公共组件的设计和开发;业务组根据业务逻辑进行模块划分,结合业务需求制定项目计划,完成渐进式重构改造。最后结合项目实例,总结得到软件重构的七步曲(图1)。


    图1 软件重构七步曲

    搜狗商业平台架构师刘建:搜狗商业平台基础架构演化实践

    刘建以搜狗商业平台基础架构为例,向我们完整的展示了一个系统从ALL-IN-ONE的初始阶段一步步演化成为一个高性能、高可用、高可扩展的成熟系统。搜狗商业平台的架构演化分为初始阶段、水平化、服务化和流式计算4个阶段(图2)。

    • 初始阶段,业务优先,快速迭代,但随着业务规模的迅速扩张,数据库健康度低,访问超时等问题日益凸显。
    • 在水平化阶段,通过计算水平化和存储水平化,成功解决了系统性能和存储问题,计算水平化的难点在于状态的处理,理想的设计是独立存储中间状态,实现计算节点的无状态化;而在进行存储水平化设计时,则需要更多的关注数据源的迁移成本,搜狗商业平台是通过自研的数据库分库分表框架Compass实现平滑迁移。
    • 在服务化阶段,通过优化解耦实现资源私有化,服务接口化和模块独立化,有效降低了团队之间的沟通协作成本。搜狗商业平台的服务化基础框架Polaris,是在Thrift基础之上增加了认证,授权,监控,失效重连和负载均衡等机制自研形成。
    • 为了更好的服务客户,引入了kafka + storm + pump + Binlog Tunnel的流式计算框架,流式系统在设计选型时需要充分考虑消息顺序性,消息重复和消息丢失问题,必要时可以进行双路比对,降低系统风险。

    最后值得一提的是,搜狗商业平台最近开源了嵌入式数据库分库分表框架Compass,遵循标准的DataSource接口,支持分库分表、读写分离和负载均衡,可屏蔽底层数据源差异,支持方便的数据源迁移和扩容缩容,并能够进行有效的数据源健康度监控。


    图2搜狗商业平台基础架构演化

    饿了么创新产品研发部副总监程军: 饿了么整体架构

    饿了么技术体系是典型的业务驱动,业务量的爆发式增长推动整体架构不断向前演化。饿了么经历了单机时代、集群时代、SOA时代(图3)的演进过程。为解决性能问题,核心gateway使用F5代替了HAProxy。在SOA过程中,对于核心服务采用数据库按领域拆分、热数据缓存、异步消息通知和服务降级的策略,有效的应对流量洪峰。在数据库方面,饿了么自研了数据中间件DAL,实现了MySQL的连接池、分库分表、读写分离、查询拒绝等功能。引入Service Orchestrator实现前后端分离,提高系统并发度、缩短响应时间。另外饿了么的核心服务是基于Python 构建,也为我们提供了一个用python架构支持高并发互联网服务的一个范例。


    图3饿了么整体架构

    小米科技的架构师张涛:小米网架构变迁实践

    来自小米科技的张涛,分享了小米网的架构变迁以及架构选型的一些思考。为应对业务的迅猛增长,小米网对系统架构做了如下的演进优化:对DB按系统拆分,做到水平可扩展;系统调用关系由网状结构优化为星状结构,引入MQ,实现系统解耦;纵向来看,把系统划分为调度层、业务层、数据层三层结构,功能明确,接口清晰;引入Cobar解决浪涌导致的高压。如何在架构设计层面提高效率,降低成本,小米网的做法是抽象基础服务和基础组建,节约开发成本,提升服务质量;按照“业务纵切,平台横切”的方案,实现业务的模块化和基础服务的平台化。另外张涛还介绍了小米网的特色技术,包括流量控制架构、通用缓存框架MCC、异步消息推送服务Notify、库存设计和智能调拨算法、虚拟化和云服务、监控和异常、安全策略、SOA等。其中MCC采用的是Twemproxy+redis成熟缓存方案,并考虑了数据热加载,业务隔离,多机房灾备等问题而形成的通用缓存框架;告警量爆炸也是大中型互联网公司的常见问题,对此小米给出的建议是:区分异常和告警,只有满足一定频度或数量的异常才能升级为告警,而所有告警必须处理;小米网的SOA框架如下图4 所示,框架选型是基于Thrift实现RPC核心功能,基于etcd完成服务注册、服务发现、failover、框架支持多语言环境,研发可以用很小的成本快速搭建RPC服务。


    图4小米SOA框架

    途牛旅游网研发总监高健:途牛网站无线架构变迁

    途牛旅游网的高健从服务化的推进、多机房异地部署、性能优化和APP客户端技术4个方面介绍了途牛无线架构的演进。在服务化方面,通过引入MQ实现服务的异步化,通过数据库的分库分表实现高性能的并发计算,通过引入NoSQL、MySQL异构同步机制,Unix域通信机制实现分布式计算(图5),并通过注册中心和监控中心实现整个系统的高可用性和高可维护性。多机房异地部署面临的问题是专线不稳定和数据同步延迟过大,因此对于对实时性要求较高的数据可以采用应用层双写的方案。在性能优化部分,途牛采用Codis进行热数据缓存,并且自研了缓存更新系统BWT和监控系统OSS,保障Codis的易用性和平稳运行。而在APP技术方面,采用插件式开发框架,模块之间相互独立,降低耦合度;使用静态化资源,提升响应速度;引入alibaba的AndFix框架,实现热修复。


    图5途牛分布式计算架构

    快的打车架构师王小雪:快的打车架构实践

    快的架构师王小雪完整的回顾了快的打车架构演化过程,从最开始的功能基本可用,到核心链路优化,再到体系化架构设计。在核心链路优化阶段面临的主要问题是LBS查询性能瓶颈和长连接服务不稳定,直接影响到快的核心业务,问题的原因更多地涉及实现层面的细节:比如MongoDB早期版本全库锁的问题,频繁内存拷贝的问题,超时管理算法效率的问题,考验着架构师问题快速定位的能力。而在体系化架构设计阶段则是更为全局和宏观的设计和优化,包括:系统分布式改造、无线开发平台、日志收集检索系统、实时计算与监控和数据层改造等。其中系统分布式改造的技术选型是dubbo+RocketMQ,实现服务之间的接口化和异步化;日志收集和检索系统主要功能是实现问题的快速定位,技术选型是log4j + flume + elasticsearch的组合,单个请求的链式调用关系通过flag进行串联,实现分布式系统的问题追踪和定位;快的的实时计算系统目标是提供实时准确的运营数据,技术选型是较为通用的RocketMQ+storm+HBase,RocketMQ为storm和HBase提供流量平滑功能,HBase在使用时根据业务场景避免update操作,提升性能;在数据源改造(图6)的基本思路是用HBase查询代替Mysql的SQL查询,其中最核心的技术点是Mock Mysql Slave,从mysql master得到binlog数据通过MQ同步到HBase、HDFS等异构存储介质之上,另外HBase的二级索引也是一个社区比较热门的话题,快的的方法是在客户端插入二级索引,相比Coprocessor的方案可更好的兼容HBase批量插入操作。


    图6 统一数据同步方案

    58同城系统架构师孙玄:58同城高性能移动Push推送平台架构演进之路

    孙玄介绍了58移动Push从单平台、多平台,再到高性能平台的演进过程。58最先提供的是iOS的Push服务,iOS不允许service后台常驻,因此APSN几乎是IOS Push的唯一选择,单平台阶段,58搭建了iOS Provider平台和APSN对接,提供了证书验证、连接池、错误处理等功能。随着移动流量的爆发,多终端,多APPs,多策略的业务需求,推动Push进入多平台阶段。关于Android推送,58采用的是自研Android Provider和第三方Push平台对接的方案;采用抽象公共逻辑,统一封装接口的方式解决需求多样化,逻辑复杂化的问题,提升开发效率。高性能阶段则重点解决的是Push性能和稳定性的问题,在性能优化方面,搭建IOS/Android统一的push平台(图7),并通过Push的并行化,异步化提升整体性能;关于稳定性的讨论主要是集中在Android终端,根据不同机型选择不同的Push通道,也可以根据策略选择失败重试机制。


    图7 58同城移动Push架构

    腾讯高级工程师徐汉彬:QQ会员活动运营平台的架构设计演变

    来自腾讯的徐汉彬以会员活动为背景介绍了AMS的架构演变。QQ活动运营的特点是活动多、周期短、个性化强而且过期作废。人力成本极为有限和层出不穷的业务需求是需要解决的主要矛盾,这里徐汉彬给出答案是构建高效的运营开发模式,整个系统架构从上至下分为前端层、CGI层和服务层,前端层提供基础组件,CGI实现业务逻辑,服务层提供平台支撑,通过活动配置文件实现前端逻辑和后端服务的自由组合(图8),使产品运营同学可以独立完成活动发布。除此之外,系统的性能、可用性和安全性也是架构师需要考虑的问题。性能优化方面,AMS引入NoSQL优化增查改删的性能;并采用了带版本号的CAS乐观锁机制提升高频操作的并发度,从而支撑了5w+/s的秒杀活动。对于可用性从架构设计和多维度运维监控两个方面来保证,架构设计层面充分考虑了水平扩容、failover、过载保护、服务降级等问题;在运维监控角度,建立多通道,多维度的监控告警机制,确保及时发现响应线上问题。关于安全体系,AMS采用了技术手段、产品设计、安全支撑体系多管骑下的思路,最大程度上保障业务安全。

    其实这里有一个可以引申开来的话题——科技公司的工具文化,有种比较激进的观点是用最优秀的人才来开发工具,提升整个团队,整个公司的效率,徐汉彬的分享也从一个侧面展示了技术工具的强大威力。


    图8腾讯AMS自动化运营体系

    总结

    听了上述一线架构大牛的分享,收获良多,同时也颇有感触。

    1. 全栈架构。从本次架构会场的分享涵盖了从基础架构到业务形态,从系统设计到持续交付,从安全、监控到虚拟化技术,从版本迭代到项目投入产出比等诸多领域。本质上,架构师的职责就是充分评估业务,人员,成本等要素在技术层面上保障服务的顺利落地,稳定运行并适时推动平滑升级,期间遇到的所有技术的问题都是架构师需要直面的。既是新业务新技术的探路者,又是扫清线上系统瓶颈的急先锋,架构师的担子,不轻。
    2. 趋同存异。一天的分享中,服务化、分库分表、异步、分布式、安全、监控等这些高频词反复出现,说明架构设计的基本原则和架构师们关注点是趋同的,甚至各自系统架构演化到不同阶段遇到的瓶颈和应对的举措也是惊人的相似。当然也有不同,比如安全,有些场景下关注的业务安全,有些则更关注数据安全;比如数据一致性,有些场景要求强一致性,有些只需关注最终一致性。而其实也正是业务场景的差异给了架构师们展示自己聪明才智的舞台。
    3. 拥抱变化。从分享的主题来看,变化、变迁、演化,主线是一个“变”字。业务量的迅猛增长会倒逼架构的优化和升级,快的和饿了么是典型的例子。而新技术出现也会推动架构的变革,比如服务化可以提升开发效率,降低协作成本;比如流式计算,可以改善用户体验甚至是引导用户需求。无论是业务驱动还是技术驱动,架构师都需要做的就是时刻拥抱变化,成为一个敏锐的观察者,技术航线的引领者和架构的实践者。
    展开全文
  • 各大互联网公司架构演进之路汇总

    千次阅读 2019-03-01 08:07:41
    最近,整理个各大互联网公司架构演进相关介绍,让我们一起看一看各大互联网公司在成长过程中遇到过哪些问题,又是如何解决问题的。希望对你有帮助!建议收藏保存。 支付宝和蚂蚁花呗的技术架构及实践 支付宝的高...

    转载自微信公众号:Hollis Hollis

    最近,整理个各大互联网公司的架构演进相关介绍,让我们一起看一看各大互联网公司在成长过程中遇到过哪些问题,又是如何解决问题的。希望对你有帮助!建议收藏保存。

    支付宝和蚂蚁花呗的技术架构及实践

    支付宝的高可用与容灾架构演进

    余额宝技术架构及演进

    淘宝数据魔方技术架构解析

    淘宝技术发展历程和架构经验分享

    淘宝架构演进背后——零售业务中台架构设计探讨及实践

    阿里游戏高可用架构设计实践

    阿里B2B技术架构演进详解

    阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读

    首次公开!菜鸟弹性调度系统的架构设计

    秒杀系统架构分析与实战

    王者荣耀游戏服务器架构演进(完整版)

    京东峰值系统设计

    京东咚咚架构演进

    京东B2B业务架构演变

    京东虚拟业务多维订单系统架构设计

    京东商品单品页统一服务系统架构未公开的细节

    数据蜂巢架构演进之路

    京东到家库存系统架构设计

    一张图看完京东基础架构演进之路

    大促系统全流量压测及稳定性保证——京东交易架构分享

    京东618实践:一元抢宝系统的数据库架构优化

    京东上千页面搭建基石——CMS前后端分离演进史

    京东物流系统架构演进中的最佳实践

    京东话费充值系统架构演进实践

    京东到家订单中心Elasticsearch 演进历程

    新浪微博平台架构

    微博深度学习平台架构和实践

    新浪微博用户兴趣建模系统架构

    新浪微博推荐系统架构的演进

    新浪微博应对弹性扩容的架构演进

    微博众筹的架构设计

    当当网系统分级与海量信息动态发布实践

    LinkedIn架构这十年

    4亿用户的LinkedIn数据产品设计原则和架构实现

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

    豆瓣的基础架构

    小米网抢购系统开发实践

    小米抢购限流峰值系统「大秒」架构解密

    海尔电商峰值系统架构设计最佳实践

    唯品会峰值系统架构演变

    1号店电商峰值与流式计算

    蘑菇街电商交易平台服务架构及改造优化历程

    蘑菇街交易平台 数据库架构演进历程

    麦包包峰值架构实践

    苏宁易购:商品详情系统架构设计

    苏宁易购亿万级商品评价系统的架构演进之路和实现细节

    携程的技术演进之路

    从技术细节看美团的架构

    美团云的网络架构演进之路

    美团DB数据同步到数据仓库的架构与实践

    美团即时物流的分布式系统架构设计

    美团配送系统架构演进实践

    美团外卖Android平台化架构演进实践

    途牛订单的服务化演进

    途牛抢票系统架构演进

    FunData — 电竞大数据系统架构演进

    Airbnb架构要点分享

    一路打怪升级,360推荐系统架构演进

    360数据处理平台的架构演进及优化实践

    12306核心模型设计思路和架构设计

    ACFUN 的视频架构演化实践

    涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维!

    宜人贷系统架构——高并发下的进化之路

    链家网技术架构的演进之路

    去哪儿网支付系统架构演进全历程

    饿了么:业务井喷时,订单系统架构这样演进

    美图数据统计分析平台架构演进

    中国民生银行天眼日志平台架构演进的平凡之路

    YouTube 网站的架构演进

    百度万人协同规模下的代码管理架构演进

    微店大数据开发平台架构演进

    点融支付系统架构的演进

    付钱拉的API架构演进

    荔枝架构实践与演进历程

    有赞搜索系统的架构演进

    苏宁安全架构演进及实践

    展开全文
  • 首先通过这篇文章,想给大家介绍一下搭建一个互联网公司后台服务架构的内容。顺便介绍一下运维架构。通过这篇文章让大家了解一下互联网公司主要使用的那些东西,当然这里只是简单的介绍了一小部分。更多的内容还需要...

    引言

    首先通过这篇文章,想给大家介绍一下搭建一个互联网公司后台服务架构的内容。顺便介绍一下运维架构。通过这篇文章让大家了解一下互联网公司主要使用的那些东西,当然这里只是简单的介绍了一小部分。更多的内容还需要读者自己去发掘。

    搭建框架需要的技术和工具

    • 后台服务器:dubbo、spring boot、spring mvc、spring-sercurity-oauth2、spring-ldap、spring-boot-jpa等技术
    • 项目管理工具:Ant、Maven、nexus
    • 版本管理工具:GitHub、SVN、Git
    • 数据库:Oracle(中小互联网公司不常用)、MySQL、MongoDB
    • 日志管理工具:ELK
      Elasticsearch-6.0.0
      logstash-6.0.0
      kibana-6.0.0
      filebeat-6.0.0
    • 持续集成工具:Jenkins+版本管理工具
    • 缓存中间件:Redis
    • 服务注册组件:Dubbo、Dubbox、Zookeeper、Spring Cloud Eureka、Spring Cloud Ribbon等
    • 消息中间件:RocketMQ、Kafka、ActiveMQ 、RubbitMQ等消息中间件
    • 服务器:Tomcat、Weblogic
    • 负载均衡工具:Nginx
    • 容器工具:Docker
    • 运维监控工具:Open-Falcon

    主要掌握的技术

    • SpringBoot 技术体系,Dubbo技术体系,以及RESTful的技术框架
    • 对于Dubbo的RESTful框架,oauth+token技术验证
    • SpringBoot整合Dubbo的使用。微服务技术的使用。
    • 了解JVM的性能调优
    • Redis作为缓存和消息中间件的使用,以及分布式架构
    • 对于git 、elk、jenkins、kafka、rocketmq等工具的使用
    • 掌握Docker的使用

    当然还有很多的技术,这里只是简单的提到了一部分技术。还有其他的高级的技术需要读者自己学习。

    达到什么样的要求

    • 可以独立搭建各个服务组件
    • 熟练使用各个组件的用法
    • 熟悉各个组件的性能调优

    还是跟之前一样,这个要求只是个人对整个技术体系的掌握要求。当然还可以对自己更高的要求。

    展开全文
  • 一、小型公司网络架构 狗子是某大学计算机专业本科应届毕业生,由于自己的技术不错,再加上互联网产业的巨大利润的驱使,狗子决定走上创业这条路,于是,狗子联合了同学二黑,鸡子,狗蛋等人花费了几个月的时间写出...

    一、小型公司网络架构

    狗子是某大学计算机专业本科应届毕业生,由于自己的技术不错,再加上互联网产业的巨大利润的驱使,狗子决定走上创业这条路,于是,狗子联合了同学二黑,鸡子,狗蛋等人花费了几个月的时间写出了一套网站,是关于足球资讯的pc端网站加上手机APP客户端。现在产品测试成功了,准备发布了,狗子想到了两个问题:

    1.网站需要服务器

    狗子之前所有的代码测试都是在本地服务器或者局域网上进行的,现在需要把产品发布到外网上,让所有的人都能访问,因此再用自己的电脑当服务器显然很不现实,于是,狗子去买了一台服务器,在上面装了jdk,tomcat,mysql等必备环境,把网站搭了起来,又经过了很多测试,运行毫无问题了,通过网站的ip可以访问并且实现功能了,而且app的后台也在服务器上测试成功了,目前公司的架构如图所示:

    那么问题又来了:

    2.网站需要的域名

    显然,如果让各地的用户需要记住你服务器的ip地址才能访问你的网站的话,那是会被用户拿刀追着砍的。因此,狗子需要一个便于记住的域名,以后在浏览器输入这个域名就能够访问这个网站,所以,狗子拿着申请下来的各种资质,找到了域名贩卖商,一般是腾讯阿里巴巴这种代理贩卖商,花了一笔钱,从它们的手上购买了域名,彻底实现了网站通过域名就能访问的功能。这里需要讲解一下通过域名访问的原理:

    域名访问原理

    通过ip访问相当于用户直接访问输入的ip所指向的服务器,而通过域名访问,是用户输入域名之后,请求先被发送到域名管理者所控制的DNS服务器中,DNS服务器中有一个数据库,数据库中存有这个域名所对相应的ip地址,DNS服务器当了一个中间人,将请求转发到这个ip地址对应的服务器,就实现了通过域名访问,因此,通过域名访问本质上还是通过ip访问。那么,狗子公司的架构图就应该是下面这样:

    解决了这两个问题,狗子的产品顺利的发布了,经过一两个月的运营,慢慢地发掘了一小批用户,实现了小幅盈利,狗子开始沾沾自喜了,原来,挣钱就这么容易啊。然而很快,现实给了初出茅庐的狗子当头一棒:一个连黑客都算不上的恶意用户,通过自己写的一个小小的程序,居然把狗子的服务器搞崩了,这是怎么一回事呢?

    服务器防火墙的概念

    读者可能也了解一些,用户通过网站向服务器发送请求,服务器处理请求再对用户进行响应对服务器的内存是有开销的,但是,读者可能不清楚的是,这种开销有多么大。每当一个用户向服务器发送请求,服务器都要启动一个线程去处理这个请求并且响应给用户。这之中耗费的服务器内存差不多是1mb以上级别的,更别说是再加上其中的服务器处理数据进行的各种操作了。也就是说,用户发送一个东西,服务器会损失1mb以上的内存,多发几个,服务器就该受不了了。

    攻击狗子服务器的人就是写了一个简简单单的小程序,重复多次地向服务器发送请求,服务器在短时间之内没有这么多内存去处理这么多请求,自然就宕机了,就崩了。

    搞懂了这些,狗子自然就想出了应对策略,于是,他给自己的服务器开启了防火墙,通过配置防火墙,实现了禁止同一个用户在短时间内重复多次频繁发送请求,他的服务器也可以安心地工作了。

    当然,有的读者可能会问了,那么,防火墙禁止了单一用户短时间内多次重复发送请求,那么如果我是一个黑客,通过种木马等黑客手段控制了数以千计甚至更多的其他用户的电脑,让这些不同的电脑去短时间内攻击服务器,可不可以攻击成功呢?答案是确实可以,这些被控制的电脑就是DDOS攻击中的肉鸡,这里有些跑题了,在本文不再赘述。注意,配置这种拦截单一ip防火墙只是基本操作,甚至买来的服务器会自带。之所以狗子的服务器没有是因为只有他足够的“初出茅庐”,才能给读者解释清楚:)。

    那么,我们现在的架构图就应该是这样:

    二、中型公司网络架构

    狗子的公司越办越大,越来越多的用户开始使用他的软件看各种足球咨询,而且,用于用户的基数变大了,每天增长的用户数量都在变多,以前可能是每天有十个新用户,那么现在就是每天有了一百个新用户。在一个晚上的服务器宕机事故出现之后,狗子终于意识到,自己的单台服务器应对日益庞大的用户群已经开始体力不支了。于是,他用了之前积攒下来的收益,又购入了三台服务器,并且用其中一台服务器单独运行数据库,作为数据库服务器。

    那么现在问题来了,这四台服务器怎么一起使用,同时服务于一个网站的运营呢?

    解决方案有两个:

    1.三个服务器同时运行相同的代码,在代码页设置三个用户入口,如果用户进入一个入口发现进不去,就选择另一个入口,每个入口对应一台服务器

    这样做的好处是简单方便,直接把代码往另外两个服务器一拷贝 然后更改一些其中的设置,再设置三个入口就行了。但是缺点也是很明显的,显然用户的第一反应都是点击第一个入口,只有当第一个入口进不去的时候才会选择另外两个服务器,而且等到以后用户数量越来越大,难道我们要设置几十几百个入口让用户一个一个去试吗?这显然又是一个被用户追着拿刀砍的行为。(当程序员可以体验死亡如风,常伴吾身的感觉)所以,这个方法显然不太现实,不过这个方法也是有它的应用场景的,比如说在一些学校的官网的在校生入口,由于在校生是毕业一批又新来一批,所以用户体量不会有太大的增长,因此才可以使用这个方法。这种方法的架构图是这样的:

    2.负载均衡

    狗子咨询了一些在中大型互联网公司的学长,终于找到了一种解决这个问题还不像第一种方法那样容易有生命危险的办法,那就是nginx。

    nginx是个什么东西呢?是用来做服务器负载均衡的,说白了就是当用户发送请求的时候,先经过nginx这个中间人,nginx会去感受哪个服务器比较闲,就会把请求发送到这个比较闲的服务器上去,这样运行多了,就可以做到每个服务器相对的负担比较平衡,这就是负载均衡。nginx可以放在服务器本机,也可以放在单独的一个服务器中,nginx这个中间人会向各个服务器分发请求,并且nginx的性能十分高超,每秒百万级以下数量的请求都可以处理。你可能要问了,如果狗子把nginx单独放在一个服务器上,那么他的三台服务器怎么对应到同一个域名上呢?他是否需要给每个nginx分发的服务器也就是那三台购买三个域名呢?当然不用,事实上,现在我们对外的公共ip已经变成了安装nginx的服务器的ip了,也就是说,我们只要把域名映射到这个nginx服务器就可以了,然后nginx中会有配置,我们只要在配置中写下三个服务器的ip,nginx以后就能把请求分发过去了。那么,我们现在的架构图就变成了下图这样:

    狗子还想对服务器做做优化,像是session这种东西,只是简简单单的一个session请求,却要耗费服务器那么多的性能,有没有一种方法,能够对这方面做一些改进呢?

    当然有,解决方案就是redis。

    redis的作用

    redis是一种数据库,我们比较熟知的数据库有mysql,sqlServer,oracle等,那么这个redis又是个什么玩意?

    redis和上述几种数据库不同,它是缓存数据库,也就是说,redis是致力于短时存储的,redis并不是从硬盘中拿取和处理数据,它对数据的处理都是在内存中,由于内存的数据处理速度不知道比磁盘高到哪里去了,所以redis的性能也是碾压mysql,sqlServer,oracle这种数据库的,这无关于软件优劣,纯粹是因为硬件层面的因素。不过redis因为是在内存中,因此只要机器一关闭,内存中redis存储的东西就会消失了,不过redis也可以将数据持久化存储到mysql这些数据库中,但是一涉及到对硬盘的操作,redis的性能就下来了。因此,我们的redis常常是用来存储像是用户的登录状态这种短时需要的数据,而去把用户登录注册的时间备份到硬盘上的数据库。那么,我们现在的架构图就变成了如下这样:

    又过了一段时间,随着用户体量越来越大,数量级达到了上万上十万的时候,狗子发现一直以来,自己都忽略了一个问题,尽管自己增加了服务器,加了负载均衡,还启用了redis缓存数据库,为了使用户访问的速度增加还有让服务器的负载不那么大,但是,网站处理数据的方式本质上是对数据库进行增删改查,而现在我们的数据库服务器只有一台,数据库处理数据本身就是一项复杂耗费内存的工作,现在的一台数据库服务器更是杯水车薪,因此,在中小型公司的网站架构中,最先撑不住的往往是数据库服务器。

    当然,狗子又有了解决办法。他又购入了两台服务器当作数据库服务器,然后把数据库进行了分库分表的操作,分别把数据存在三台数据库服务器上。当然狗子觉得这还不够,因此,他又使用了一种技术,将数据库进行了读写分离。

    读写分离理解起来很简单,和它的字面意思一样,就是把从数据库中写入数据和从数据库中拿取数据进行分离,以此来达到减少数据库服务器负担的作用。用来读取数据的服务器和用来写入数据的服务器会在用户进行操作之后延迟一段时间进行数据同步,一般来说延迟时间不会太长,很可能用户都不会觉察到。那么,我们现在的架构图就变成了下图这样:

    可以看到,我们的图上新出现了“集群”这个词,不错,互联网经常提及的xxx集群终于在我们眼前解开了神秘面纱,也就是多台服务器同时协同处理事务,就可以称作一个服务器集群。

    三、 大型公司网络架构

    时光飞逝,转眼间五年的时间过去了,狗子已经从一个中小型互联网公司的小老板摇身一变成了一个上市公司总裁,和马云马化腾等it行业巨佬互动成了他的日常,他的一句话可以动摇it界,他的网站也拥有了上亿的用户。。。。。

    到了这种程度,狗子的公司网络架构已经变成了下图这样:

    (内容比较多,看不清记得放大哦)

    能支持上亿人访问的服务器肯定不止这么几个,只是象征性地画了几个。同时,我们把redis服务器与mysql服务器进行了连线,是因为我们前面说过redis可以将数据存入持久性数据库,这里我们可以用来记录登录时间之类的信息。同时,图中的mysql服务器是重叠在一起的,不要以为仅仅只有两台服务器。

    随着公司变为巨头,狗子的经验不断累积,他发现自己的公司虽然体量很大,开发的产品越来越多,功能越来越全面,但是总是有那么一部分的功能是重复的。假如在一个新的页面或者产品中,刚开始开发时有那么10%是和以前开发过的页面或者产品的功能是重复的,那么,等到这个新东西的功能开发接近完善的时候,就可能会有70%的功能和从前开发的一样。仔细想想这是一件很可怕的事情,狗子居然画了70%的开发时间和开发成本在做以前早就做过的事情。

    这狗子就不能忍了,于是他想到了一个好办法,既然面向对象编程语言中有封装的这种概念,把代码的重复部分封装起来便于重复使用,那么产品和产品之间为何不能封装相同的东西便于使用呢?

    于是,他开始实现微服务的概念,解释起来可能一上来比较难于接受,我们先来看,刚刚我们的架构图中的产品实际上可以看成一整个系统,假设这个系统叫做系统A。那么,我们现在开发出来了其它的各种产品或者各种页面,也可以看作是新的系统B和系统C。现在,系统ABC之间有很多重复的部分,于是,我们想到了将这些重复的部分放到一起,供三个系统同时调用。那么实际上,这个重复的部分就是被封装起来的微服务,微服务是一种模块化开发,把产品的功能提炼成多个模块,在开发时把模块拼接起来,就可以省去大量的工作。为了实现一个模块,模块中也需要带有服务器集群等东西。听了这些,我们下面的架构图看起来应该没有那么难懂了:

    这些与技术无关,而是一种开发理念,一种思想,有了这种思想,才能在成千上万的用户需求之间找到共通,提升开发效率,节省成本。

    狗子有了这种思想,并实现了他,终于打败了所有竞争对手,迎娶白富美,走上了人生巅峰。

    后来,他梦醒了。。。

    写在后面

    对于很多初级Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。所以博主整理了一份还算全面的Java架构学习资料,包括但不限于:高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码、Mybatis、Netty、Redis、Kafka,Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多个知识点,希望对想成为架构师的朋友有一定的参考和帮助。需要Java架构思维导图和学习资料的可以加一下java架构交流:777584112即可获取。希望和志同道合的朋友一起学习,一起进步。

     

     

    展开全文
  • [安全管理]工业互联网安全架构白皮书(2020) 安全对抗 安全运营 安全建设 安全人才 安全架构
  • 让我们先看看通常一家互联网公司会有哪些职位:管理职位:这个不讨论产品条线:产品经理、产品助理、设计师等运营条线:产品运营、活动策划、会员运营、数据运营、(新)媒体运营、内容策划、编辑等技术条线:架构师...
  • 一篇文章看懂互联网公司职位架构

    万次阅读 2016-02-29 14:36:04
    「产品助理」是一个在大公司里才会出现的岗位。这个职位设立的初衷,是解放产品经理,让产品经理从繁杂的会议、扯皮、文档写作中解放出来,专心做需求分析和产品设计。 2、产品经理 「产品经理」的具体...
  • 小型互联网公司的一般架构

    千次阅读 2016-10-26 19:54:03
    来说说一般小型的互联网公司的一般架构,欢迎拍砖指正。 1.一般互联网公司的特征: Client : 用户多,流量大,请求多等,主要来源是PC机,Android 设备或者IOS设备等 Server : 要求反映迅速,处理业务复杂,...
  • 互联网公司分布式系统架构演进之路

    千次阅读 多人点赞 2019-11-27 10:36:50
    介绍 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 ...1 单应用架构 2 应用服务器和数据库服务器分离 单机负载越来越来,所以要将应用服务器和数据库服务器分离 3 应用服务...
  • 知名互联网公司架构

    千次阅读 2018-09-10 10:17:58
  • 互联网应用架构

    千次阅读 2018-07-26 14:31:30
    互联网应用架构 1. Web服务器和应用服务器的区别 Web服务器的设计目的是提供HTTP内容,应用服务器也可以提供HTTP内容,但不限于HTTP,它还可以提供其他协议支持,如RMI / RPC。 1.1 Web服务器 Web服务器的...
  • 管理多条业务线,产品、技术等,人员,公司,规划等 参与公司运营:什么时候应该做什么样的事情,要做什么样的迭代,能不能赚钱,产品有没有可能成功 安排公司决定了什么事 …… 技术总监: 精通一个或多个技术栈,...
  • 管理咨询组织设计 2020年互联网解决方案管理软件企业组织 架构和业务流程 一公司组织架构 . 2 二部门主要职能 . 2 一综合行政部 .2 二财务部 .2 三信息技术部 .3 四战略营销部 .3 三主要业务流程 . 4 一互联网解决...
  • 一、小型公司网络架构 狗子是某大学计算机专业本科应届毕业生,由于自己的技术不错,再加上互联网产业的巨大利润的驱使,狗子决定走上创业这条路,于是,狗子联合了同学二黑,鸡子,狗蛋等人花费了几个月的时间写出...
  • 后台服务架构:dubbo、spring-boot、spring mvc、spring-security-oauth2、spring-ldap、spring-data-jpa等 项目管理工具:maven、nexus 版本管理工具:gitlab、git 数据库:mysql、mongodb 运维监控工具:Open-...
  • 大型互联网技术架构1-架构概述

    万次阅读 2016-06-19 08:48:27
    上图坐标指向硅谷,最近开始研究互联网分布式架构,风口浪尖,高大上;特与极客朋友们分享,共勉。 互联网架构 近些年来,互联网的高速发展,大数据时代,Booming Years,我们作为技术极客,需要跟得上节奏,趋势。 ...
  • 互联网架构演进

    千次阅读 2017-12-06 14:50:49
    前言  互联网时代发展至今,网站架构已经经历了多... 在我看来,互联网架构经历了单体架构、水平分层架构、面向服务架构、微服务架构以及服务网格架构等几个不同阶段,每个架构有什么特点?这些架构间有什么不同?让
  • 互联网风控系统架构分析

    千次阅读 2021-01-10 01:03:39
    去年下半年换工作之后,目前方向...文章目录前言一、互联网风控是做什么的?风控的定义二、常见风控系统的实现架构1.风控系统的架构2.风控的系统流程三、核心风险识别环节1.规则及规则引擎风控的规则是什么?常见的规则
  • 2020年GIAC互联网架构大会组委会从互联网架构最热门的前沿技术、技术管理、系统架构、大数据和人工智能、移动开发和语言、架构相关等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,分享他们在本年度最...
  • 互联网时代架构师的职责与思考

    千次阅读 2017-05-09 00:00:17
    引言: 在当下的互联网时代,架构师是互联网行业的热点关键词,人云亦云者居多,那互联网架构师到底是做什么的,如何来评价互联网架构师的优劣呢?1. 架构师产生的历史渊源互联网应用脱胎于传统软件应用,伴随着要求...
  • 本文将对比分析DDD分层架构、整洁架构、六边形架构。 整洁架构 又名“洋葱架构”(看图就懂),体现了分层思想。 同心圆代表应用软件的不同部分,由内到外依次是 领域模型 领域服务 应用服务 容易变化的内容 比如...
  • 互联网架构的演变

    万次阅读 2018-02-27 10:27:26
    1.互联网架构的演变 大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计的数据和数以亿计的用户,问题就会变得很棘手。大型网站架构主要就是解决这类问题...
  • 主流互联网架构

    千次阅读 2017-06-18 09:32:41
    主流互联网架构 基础知识点: Squid: Squid cache(简称为Squid)是一个流行的自由软件,它符合GNU通用公共许可证。Squid作为网页服务器的前置cache服务器,可以代理用户向web服务器请求数据并进行缓存...
  • 互联网电商技术架构之一

    千次阅读 2019-06-21 14:39:56
    互联网电商技术架构之一 架构目标 业务系统 架构设计原则 应用架构 基础架构 数据库架构 分布式数据库特性 • 支持MySQL,MariaDB,MongoDB等数据库 • 服务高可用,主库故障,从库自动切换 • 数据...
  • 互联网安全架构平台设计

    千次阅读 2018-07-16 17:33:18
    互联网安全架构基本上分为以下内容: 1.Web 安全常见攻击手段(基本知识) 详细:XSS(脚本注入)、 SQL 注入、防盗链、CSRF(Token 伪造)、上传漏洞、等。 彻底分析根据不同的业务场景,分析如何彻底防御 Token ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 234,863
精华内容 93,945
关键字:

互联网公司管理架构