初级网站架构图示

简介:

网站基本架构图示:
仅供参考,这个架构是针对仅有数台服务器的一般应用,门户型应用肯定要复杂的多。

 

 

本图由亿图图示专家 绘制,此绘图软件值得推荐。


 
主要矛盾 
对于高并发的网站系统,最早暴露出来的问题就是数据库瓶颈,超级牛的数据库系统也很快会成为访问速度的瓶颈。所以,欲提高访问速度首先要解决的瓶颈就是数据库访问。策略就是
一、缓存:

1、Squid前端缓存;
2、Memcached后端缓存;
3、创建外部索引文件,如使用Sphinx;

二、数据库服务器阵列:

1、将数据库读写操作分开,分为主从服务器;
2、主从服务器分别按照一定规则设置成阵列;


总之,尽量减少对数据库的请求数量,进一步使用负载均衡,最大程度降低单台服务器的压力。

使用 Nginx 做负载均衡的理由:

  1. 免费使用
  2. 高连接并发,能够支持高达 50,000 个并发连接数的响应
  3. Nginx 采用C进行编写, 内存、CPU开销少
  4. 配置文件简单
  5. 支持url重写,支持GZIP压缩节省带宽
  6. 超级稳定,几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动
  7. 国内已经有多家知名网站使用 Nginx 作为Web服务器或反向代理服务器


详细介绍 
客户端在浏览器地址栏输入域名后,将首先访问最前端的代理服务器,静态文本型文件有此服务器直接返回,这里设置了单独的图片服务器,适合图片非常多的网站。将一部分特定的url代理到后端Squid服务器,Squid服务器根据url地址检查是否有缓存的内容,有则返回给前端服务器,否则再访问后端的php应用,获取内容并缓存以备下次访问。Squid服务器可以是一台,也可以是按一定规则组织的阵列。

PHP应用也可以是一台或者一个阵列,单台服务器的情况比较简单,阵列的话需要考虑客户端session回话的问题,解决的办法有二:

1、阵列服务器共享session回话,如统一使用memcached存储session;
2、前端服务器能判断客户端是属于哪个php服务器处理,并始终将此客户端代理给这个php应用;


比较这两个办法,从可扩展性的角度为长远考虑,第二种办法可能更为妥当。对于首次访问php应用的客户端,采取轮回规则进行负载均衡,php给客户端设置一个cookie方式的标记,再次访问则根据cookie信息链接到先前的php应用上。

比如:设置一个cookie信息host=n,n是一个数字,nginx可以获取客户端的cookie信息字符串,
upstream  backend  {
    server   backend1.example.com       weight=5;
    server   backend2.example.com:8080;
}

if ($http_cookie ~* "host=([^;]+)(?:;|$)" ) {
   proxy_pass http://192.168.0.$1;
} else {
   proxy_pass http://backend;
}

memcached数据缓存、sphinx站内搜索、MySQL主从阵列等使用可以找下相关详细的资料。
以后会有补充。

相关文章
|
3天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
5天前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新视角
【5月更文挑战第8天】 随着现代软件开发的演变,微服务架构已经成为了企业追求敏捷、可扩展和灵活部署的重要解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。我们还将讨论微服务带来的挑战,如数据一致性、服务发现和网络延迟,并提出相应的解决策略。通过本文,后端开发者将获得构建和维护微服务系统所需的深度知识,并了解如何在不断变化的技术环境中保持系统的健壮性和可维护性。
41 8
|
1天前
|
监控 API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第12天】 在现代软件开发的浪潮中,微服务架构已经成为了设计复杂系统的首选模式。它通过将大型应用程序拆分成一组小而专注的服务来增强系统的可维护性和可扩展性。本文将探讨微服务架构的关键概念、优势以及如何在后端开发中实现一个高效的微服务系统。我们还将讨论一些常见的挑战和最佳实践,以帮助开发者避免陷入常见的陷阱。
13 6
|
1天前
|
存储 NoSQL MongoDB
【MongoDB 专栏】MongoDB 与微服务架构的结合
【5月更文挑战第11天】微服务架构流行趋势下,选择合适的数据库至关重要。MongoDB作为非关系型数据库,与微服务有天然契合度。其灵活的文档模型、水平扩展性、高性能及局部事务支持,满足微服务对数据模型多样性、高可用性、快速读写的需求。实践中,需注意数据划分、索引优化、监控调优和版本控制。未来,MongoDB在微服务中的应用将更广泛,新技术将提升其在微服务架构中的价值。
【MongoDB 专栏】MongoDB 与微服务架构的结合
|
2天前
|
监控 数据库 开发者
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第11天】在当今软件开发的世界中,微服务架构已经成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了设计、部署和维护微服务系统时面临的挑战,并提出了一系列实用的策略和最佳实践。我们将从服务的划分原则出发,讨论如何确保每个微服务的自治性,以及如何通过容器化和编排技术实现服务的高效运行。文章还将涉及监控、日志记录和故障恢复的策略,旨在帮助开发人员构建一个既高效又可靠的微服务环境。
|
2天前
|
Kubernetes API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第11天】 在现代软件开发的快速演变中,微服务架构已成为企业追求敏捷性、可扩展性和技术多样性的关键解决方案。本文旨在探讨如何构建高效的微服务架构,并分析其对后端开发的影响。我们将通过一系列最佳实践和策略,展示如何优化服务的独立性、弹性和性能,同时确保系统的整体稳定性和安全性。文章还将介绍容器化、API网关、服务发现和分布式追踪等关键技术的应用,为后端开发者提供一份全面的微服务实施指南。
|
2天前
|
设计模式 监控 API
构建高效的微服务架构:后端开发的新范式
【5月更文挑战第11天】 在当今的软件开发领域,微服务架构已经成为一种流行的设计模式。它通过将应用程序分解为一组小型、松散耦合的服务来提供高度可扩展和灵活的解决方案。本文将探讨如何构建一个高效的微服务架构,包括选择合适的技术栈、设计原则以及应对常见挑战的策略。我们将深入讨论如何确保系统的可维护性、可靠性和性能,同时考虑到安全性和监控的需求。
|
3天前
|
监控 持续交付 Docker
使用Docker进行微服务架构的最佳实践
【5月更文挑战第10天】本文探讨了使用Docker实施微服务架构的最佳实践。首先,理解微服务架构是拆分小型独立服务的模式,借助Docker实现快速部署、高可移植性和环境一致性。Docker的优势在于服务扩展、容器编排、自动化构建与部署。最佳实践包括:定义清晰服务边界,使用Dockerfile和Docker Compose自动化构建,利用Docker Swarm或Kubernetes编排,实施服务发现和负载均衡,监控与日志记录,以及持续集成和持续部署。Docker虽重要,但需与其他技术结合以确保系统整体稳定性。
|
3天前
|
缓存 负载均衡 API
微服务架构下的API网关性能优化实践
【5月更文挑战第10天】在微服务架构中,API网关作为前端和后端服务之间的关键枢纽,其性能直接影响到整个系统的响应速度和稳定性。本文将探讨在高并发场景下,如何通过缓存策略、负载均衡、异步处理等技术手段对API网关进行性能优化,以确保用户体验和服务的可靠性。
|
3天前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第10天】在现代软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将大型应用程序拆分为一组小型、独立和松散耦合的服务来提供更高的可伸缩性和灵活性。本文深入探讨了微服务架构的设计理念、实施步骤以及面临的挑战,并提出了一套实用的策略和最佳实践,帮助后端开发者构建和维护高效的微服务系统。