公司在项目技术选型的时候,如果使用的是传统的技术栈,则下面的项目架构能耐简单表示一下架构模式,如果使用的是现在比较热门的SpringCloud微服务架构,则下面的部分技术可以使用SpringCloud自身的组件来进行替换。
项目架构图 |
上图是一个简单的项目架构图,只是简单的提到一些常用的技术栈,当然也不够完善,比如Nginx可能还会用到集群技术。但是大体上能够体现出一个项目从开发到上线可能会用到的一些基本的知识。
1. CDN服务器能够提高响应速度和用户体验。
2. Lvs可以做服务器负载均衡
3. Nginx可以做反向代理服务器
4. Tomcat服务器集群部署
5. 项目中可能还会用到一些分布式文件系统,例如FastDFS,Tomcat服务器会到分布式文件系统上获取一些数据
6. Tomcat服务器需要获取服务,会到注册中心Zookeeper上去获取服务,而服务的提供者会向Zookeeper注册上自己提供的服务。
7. 服务提供者可能会用到一些通信技术(ActiveMQ、RabbitMQ、Kafka等)最终去与数据库进行数据交互(最常见的就是下订单、支付业务等)
8. 因为数据库MySql会有瓶颈问题、所以一般会使用Redis这种性能极高的Nosql数据库做一些数据缓存、流量削峰的工作(例如秒杀业务我们一般会将Mysql的热点数据同步到Redis中,秒杀的时候就去操作Redis中的这些数据,然后再将Redis中的数据同步更新到Mysql中,这样避免直接操作数据库从而引发瓶颈问题)。
9. 最后是数据库,现在数据库随着存储的数据量逐步增加,我们会使用Mycat进行分库分表,但是分库分表虽然能够降低数据库的存储压力,但是在查询数据的时候也变得麻烦起来。
项目架构需要使用哪些技术栈,其实还是要结合自己的项目业务情况来看,某些项目的数据量以数亿计,这样的话项目架构肯定还是需要进行更新迭代,例如增加ElasticSearch搜索引擎来解决查询响应的问题。