常常碰到的需求就是,做一个网站,就这样,和某某某一样就行……
但是,这个需求可是真不简单,因为,这个需求等于没有需求,用户量、并发度、页面是否需要SEO、页面兼容性、是否需要后台管理、CDN缓存是否要上等等一概不知……
简而言之,无效需求……
网站,这件事可以很简单,也可以很复杂……
1. 简单网站
类型: 展示页,企业站点,后端 访问要求不大,SEO要完善
架构基本如下
服务器 1 台,CDN可选,后台语言推荐非阻塞的
nodejs,前端语言推荐
原生 或
jQuery,CSS可以原生来写, 也可以使用Bootstrap等CSS框架数据库 非事务 mongodb /事务 mysql或pssql
反向代理 + 负载均衡 nginx
缓存 redis
2. 中等复杂度网站
类型: 用户频繁访问的网站, 有一定的并发要求
架构基本如下:
服务器: 若干 数据服务器, 缓存服务器, 用户认证服务器, 业务服务器要分开
后台语言: Java Golang Python NodeJS
前端: 高业务型采用前端框架 vue react, 展示型 采用jQuery
数据库: 读写分离, 主从分离, 分库分表, NoSQL存储数据
缓存: 良好设计, 定时取热数据, 增加缓存命中率, 主从分离 Redis集群
消息队列服务: 解耦数据和行为 MQ, Kafka
日志收集及监控服务 flume ELK
3. 高复杂度网站
类型: 海量用户访问网站, 数据库并发压力高, 事务复杂
架构基本如下:
服务器: 多组服务器集群, 异地冷备, 同城热备, AB测试无缝切换, 广泛的负载均衡, 代码Bug追踪ID
后台语言: 复杂多样, 微服务化
前端: 和中等复杂度基本一致, 需要引入组件的全局状态管理 redux vuex等机制
数据库: 多种存储形式, 流式计算, 读写分离, 主从分离, 分库分表, NoSQL存储数据,大数据生态
消息队列服务及日志收集服务
网站没那么简单,web工程师共勉 ^_^