网站技术笔记-演化

简介: <div class="markdown_views"><p>先上图 <br><img src="http://img.blog.csdn.net/20150925143830538" alt="这里写图片描述" title=""></p><p>到现在为止都是通过新增组件来获得能力的。进化到这个架构大概需要如下的过程:</p><ol><li>最简单的,上传文件,应用

先上图
这里写图片描述

到现在为止都是通过新增组件来获得能力的。进化到这个架构大概需要如下的过程:

  1. 最简单的,上传文件,应用程序和数据库都在同一台机器上
  2. 把这三大块分离: 应用程序可能需要更快的cpu的电脑,数据库放到内存很大磁盘很快的电脑上去, 建立单独的文件服务器需要很大的磁盘
  3. 用缓存改善性能,分为本地和远程,本地更快,远程更加可扩展。把集中访问的数据放到缓存上去。这样可以减少给数据库的压力
  4. 单服务器并发处理能力有限考虑应用服务器的集群,使用负载均衡调用服务器把请求发到不同的应用服务器上去,提高并发处理性能。这样可能会带来session共享等问题需要解决
  5. 因为数据库将会面临查询瓶颈,因此对数据库进行读写分离。可以使用mysql自带的主从复制功能来实现,应用层可以考虑使用独立的数据库访问模块来完成读写分离。可能会引入主从延迟的问题
  6. 加入CDN(内容分发网络),部署在网络运营商机房,能选择最近网络提供商机房。 反向代理部署在网站中心机房,请求先查询方向代理服务器,如果有要访问的资源,则直接返回。也是缓存的一种体现
    这里写图片描述

  7. 规模再变大,单服务器不够大就要使用分布式文件服务器。 数据库容量也不够,并且单纯的读写分离也满足不了查询性能就要使用业务分库分表的方式来构建分布式数据库服务器

  8. 增加搜索引擎服务器来代替传统数据库查询,增加Nosql服务器来代替关系型数据库
    这里写图片描述

  9. 进行业务拆分。 把整个网站分成多个应用的组合。 应用之间通过超链接,或者消息队列,或者统一的数据库来进行沟通

  10. soa型服务。 因为应用变多,如果都通过数据库来关联,那么会造成连接不够用,或者更多的事务征用。因此把一些公用组件提成soa服务可以更好的支撑

误区:

  1. 为了技术而技术
  2. 迷信大公司的解决方案
  3. 企图用技术解决所有问题,有些问题可以再业务上解决,比如12306放弃秒杀的方式,改为排队和分时段
相关文章
|
4月前
|
缓存 NoSQL 应用服务中间件
性能基础之大型网站架构演化(整理篇)
【2月更文挑战第14天】性能基础之大型网站架构演化(整理篇)
82 1
性能基础之大型网站架构演化(整理篇)
|
8天前
|
人工智能 前端开发 JavaScript
技术探索之旅:从基础到突破
在这篇技术性文章中,我将分享我的技术探索历程。从最初的编程入门,到如今的项目实践和团队合作,每一步都充满了挑战与收获。希望我的经历能为同样走在技术道路上的你带来一些启发。
|
2月前
|
开发框架 程序员
「随笔」编程中的技术难题与挑战
编程中的挑战如bug、性能优化和跨平台兼容性,常考验程序员的智慧和经验。空指针异常需仔细检查代码,内存泄漏需使用分析工具并理解内存管理,而跨平台兼容性涉及不同设备接口和协议。程序员通过创新方法,如内存管理和跨平台框架,解决问题,展现创造力和技能。这些难题既是障碍,也是成长的契机。
25 0
|
4月前
|
机器学习/深度学习 算法 搜索推荐
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
136 0
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
|
4月前
|
人工智能 小程序 搜索推荐
【利用AI让知识体系化】从理论层面了解微信小程序(二)
【利用AI让知识体系化】从理论层面了解微信小程序
|
4月前
|
人工智能 小程序 前端开发
【利用AI让知识体系化】从理论层面了解微信小程序(一)
【利用AI让知识体系化】从理论层面了解微信小程序
|
架构师 算法 测试技术
嵌入式系统软件架构设计(长篇深度好文)
嵌入式系统软件架构设计(长篇深度好文)
3689 0
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
相信领域驱动设计这个对有些小伙伴来说很陌生,领域驱动设计(Domain Driven Design,DDD)自诞生以来已有十几年时间,这门本已步入老年的方法学却因为微服务的兴起而焕发了第二春。并不是微服务拯救了领域驱动设计,是因为领域驱动设计一直在坚硬的生长,然而看起来,确乎因为微服务,领域驱动设计才又焕发了青春。
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
|
缓存 前端开发 NoSQL
笔记整理:技术架构涵盖内容和演变过程总结
单体架构 2. 应用与数据库分离 3. 使用缓存抗量 4. 多应用部署和Nginx反向代理 5. 数据库读写分离 6. 应用分组部署 7. 应用分库设计 8. RPC 分布式部署 9. 应用细分和网关引入 10. 低代码编程和可复用
311 0
笔记整理:技术架构涵盖内容和演变过程总结
|
存储 缓存 运维
架构科普
  软件架构指软件系统的顶层结构;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责的划分;系统是相互协同可运行的实体。   软件开发最本质的挑战有两个:复杂和变更,而软件的价值是保证业务的响应力,与之相对的是开发资源的有限,各种的软件开发方法论,也都是在研究有限的资源下,如何应对着两个挑战,寻找平衡点,实现业务目标。因为是在寻找平衡点,就说明是有取舍的,所以就没有所谓的银弹的存在。