网站技术笔记-演化

简介: <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放弃秒杀的方式,改为排队和分时段
相关文章
|
3月前
|
人工智能 前端开发 JavaScript
技术探索之旅:从基础到突破
在这篇技术性文章中,我将分享我的技术探索历程。从最初的编程入门,到如今的项目实践和团队合作,每一步都充满了挑战与收获。希望我的经历能为同样走在技术道路上的你带来一些启发。
|
4月前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
110 1
|
5月前
|
开发框架 程序员
「随笔」编程中的技术难题与挑战
编程中的挑战如bug、性能优化和跨平台兼容性,常考验程序员的智慧和经验。空指针异常需仔细检查代码,内存泄漏需使用分析工具并理解内存管理,而跨平台兼容性涉及不同设备接口和协议。程序员通过创新方法,如内存管理和跨平台框架,解决问题,展现创造力和技能。这些难题既是障碍,也是成长的契机。
42 0
|
7月前
|
机器学习/深度学习 算法 搜索推荐
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
170 0
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
|
7月前
|
人工智能 小程序 搜索推荐
【利用AI让知识体系化】从理论层面了解微信小程序(二)
【利用AI让知识体系化】从理论层面了解微信小程序
|
7月前
|
机器学习/深度学习 人工智能 vr&ar
从概念到现实:ChatGPT 和 Midjourney 的设计之旅
从概念到现实:ChatGPT 和 Midjourney 的设计之旅
180 0
|
7月前
|
人工智能 小程序 前端开发
【利用AI让知识体系化】从理论层面了解微信小程序(一)
【利用AI让知识体系化】从理论层面了解微信小程序
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
相信领域驱动设计这个对有些小伙伴来说很陌生,领域驱动设计(Domain Driven Design,DDD)自诞生以来已有十几年时间,这门本已步入老年的方法学却因为微服务的兴起而焕发了第二春。并不是微服务拯救了领域驱动设计,是因为领域驱动设计一直在坚硬的生长,然而看起来,确乎因为微服务,领域驱动设计才又焕发了青春。
国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
|
缓存 前端开发 NoSQL
笔记整理:技术架构涵盖内容和演变过程总结
单体架构 2. 应用与数据库分离 3. 使用缓存抗量 4. 多应用部署和Nginx反向代理 5. 数据库读写分离 6. 应用分组部署 7. 应用分库设计 8. RPC 分布式部署 9. 应用细分和网关引入 10. 低代码编程和可复用
336 0
笔记整理:技术架构涵盖内容和演变过程总结
|
消息中间件 存储 缓存
架构之美-软件实现分析之道
理解一个实现,是以对模型和接口的理解为前提。 如果想了解一个系统的实现,应从软件结构和关键技术两个方面着手。无论是软件结构,还是关键技术,我们都需要带着自己的问题入手,而问题的出发点就是我们对模型和接口的理解。 了解软件的结构,其实,就是把分层的模型展开,看下一层模型: 要知道这个层次给你提供了怎样的模型 要带着自己的问题去了解这些模型为什么要这么设计 Kafka的实现主要是针对机械硬盘做的优化,现在的SSD硬盘越来越多,成本越来越低,这个立意的出发点已经不像以前那样稳固了。
142 0
架构之美-软件实现分析之道