互联网架构演进方向2

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 互联网架构演进方向2

4、部署架构

4.1 单机器

小型网站,阿里云小项目还有人在用。

1)方案

单台机器的性能很快达到上限,就是所说的资源不足了

然后开始提升配置,推动高配机器的发展,成本高昂

2)特点

部署简单:采用web包部署与发布,db等资源同台机器连接,简单易操作。(课题:tomcat源码剖析)

资源争夺:在业务发展的初始阶段尚可支撑,随着访问量的上升,单机性能很快会成为系统瓶颈。

4.2 角色划分

稍微大一点的系统,把数据库、缓存、消息等中间件剥离出去,单独机器来部署

1)方案

多台机器:tomcat与mysql各自独占机器资源

针对性扩容:tomcat应用机更注重cpu的运算和内存,mysql更注重io与磁盘性能,针对各自情况扩容

(课题:架构设计基础设施保障)

2)特点

数据维护:可以抽出单独的dba来维护数据库服务器

数据安全:需要跨机器访问数据库,链接密码需要注意防范泄漏

4.3 应用集群

2004-2005,淘宝V2.0,EJB为核心。V2.1架构下,引入spring框架走向轻量化和集群

1)方案

apache:早期负载均衡方案,性能一般

nginx:7层代理,性能强悍,配置简洁,当前不二之选(课题:openresty日活亿级用户流量控制)

haproxy:性能同样可靠,可做7层或4层代理。

lvs:4层代理,性能最强,linux集成,配置麻烦(课题:lvs+keepalived高可用部署实战)

f5:4层,硬件负载,财大气粗的不二选择

2)特点

session保持:集群环境下,用户登陆需要分布式session做支撑(课题:多维系统下单点登录的深入讲解)

分布式协同:分布式环境下对资源的加锁要超出线程锁的范畴,上升为分布式锁

调度问题:调度程序不能多台部署,容易跑重复,除非使用分布式调度,如elastic-job

机器状态管理:多台应用机的状态检测与替换需要做到及时性,一般niginx层做故障转移

服务升级:滚动升级成为可能,灰度发布(课题:不容忽视的灰度发布)

日志管理:日志文件分散在各个机器,促进集中式日志平台的产生(课题:集中式日志平台的深入应用)

4.4 多层代理

1)方案

机器规模进一步加大,动静态均有多个nginx负载,入口统一交给lvs负载。多层代理形成。

2)特点

机房受限:lvs依然是单一节点,即使keepalived做到高可用,流量仍然需要在唯一入口进入。

4.5 异地访问

淘宝V2.1时代 , 使用自己的TaobaoCDN。

将相同的系统部署多份,分散到异地多个机房,或者电信、移动等多个网络中。

不同地点,不同网络接入的用户,有了不同的访问入口和选择。

1)方案

dns轮询:通过配置多个ip将服务部署到多个机房,通过dns的策略轮询调用,可以实现机房层面的扩容

CDN:就近原则,使用户获得就近的机房访问相关资源,自己投资太大,购买他方需要付费。

2)特点

基本解决了机器部署的扩容问题,随着业务的发展,扩容与收缩变得困难,促进资源调度层面的技术发展。

4.6 云平台

针对中台化的建设及微服务数量的飙升,部署和运维支撑同步进行着变革。面临微服务的快速部署,资源的弹性伸缩等挑战,容器化与云被推进。

案例:成百上千的服务数量庞大、大促期间某些微服务的临时扩容。

1)方案

虚拟化:vm方案,Openstack,Vmware,VirtualBox

容器化:docker

编排:swarm,k8s,k3s(课题:运维篇 docker,k8s深入原理与应用)

云化:容器化解决了资源的快速伸缩,但仍需要企业自备大量机器资源。推动私有云到企业云进化

2)特点

资源预估:注意资源的回收,降低资源闲置和浪费,例如大促结束后要及时回收。

运维要求:需要运维层面的高度支撑,门槛比较高

预估风险:云瘫痪的故障造成的损失不可估量,(openstack垮掉的事故案例

5 架构思想

任何体系的成型不是一蹴而就,随着访问量,数据量的增长,业务需求在推动技术架构的发展变革。

  1. 知行合一,做之前,先考虑意义
  2. 原生优于定制,约定大于配置
  3. 什么都是,最后会沦落到什么都不是
  4. 控制技术欲,不要瞎折腾
  5. 留下扩展,但不要想到100年后
  6. 没有最好的,只有最合适的
  7. 够用就好,玩的越花,风险越大
  8. 简约最美


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
XML 数据库 数据格式
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
83 0
|
5月前
|
数据库 Java 数据库连接
Hibernate 实体监听器竟如魔法精灵,在 CRUD 操作中掀起自动化风暴!
【8月更文挑战第31天】在软件开发中,效率与自动化至关重要。Hibernate 通过其强大的持久化框架提供了实体监听器这一利器,自动处理 CRUD 操作中的重复任务,如生成唯一标识符、记录更新时间和执行清理操作,从而大幅提升开发效率并减少错误。下面通过示例代码展示了如何定义监听器类,并在实体类中使用 `@EntityListeners` 注解来指定监听器,实现自动化任务。这不仅简化了开发流程,还能根据具体需求灵活应用,满足各种业务场景。
52 0
|
5月前
|
NoSQL API 数据库
揭秘!Flask如何一键解锁RESTful API高效微服务?打造未来互联网架构的隐形力量!
【8月更文挑战第31天】本文介绍如何使用 Flask 构建高效且易维护的 RESTful 微服务,涵盖环境搭建、基本应用创建及代码详解。通过示例展示用户管理系统的 CRUD 操作,并讨论数据库集成、错误处理、认证授权、性能优化及文档生成等高级主题,助力开发者打造强大的后端支持。
87 0
|
5月前
|
边缘计算 安全 物联网
未来互联网架构的演变
【8月更文挑战第16天】随着科技的不断进步,互联网作为现代社会不可或缺的基础设施,其架构也在不断地发展与演变。本文将探讨未来互联网架构可能的变化方向,包括边缘计算、软件定义网络(SDN)、网络功能虚拟化(NFV)等技术趋势,以及这些技术如何影响互联网的稳定性、安全性和效率。同时,文章还将讨论这些变革对用户隐私保护和数据治理的潜在影响,并展望互联网架构的未来发展趋势。
|
5月前
|
设计模式 安全 网络安全
|
7月前
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
网络编程中的互联网协议 , IP地址 , 域名 , 端口 , 架构 , 网页数据请求 , 响应码
|
8月前
|
架构师 开发工具 C++
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
|
7月前
|
存储 缓存 网络协议
互联网架构与通信机制:从边缘到核心的深度解析
互联网架构与通信机制:从边缘到核心的深度解析
203 0
|
8月前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
209 0
|
8月前
|
存储 缓存 监控
【分布式】大型互联网项目架构目标
【1月更文挑战第25天】【分布式】大型互联网项目架构目标

热门文章

最新文章