热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

360搜索在微服务架构下的技术平台实践(一)单体架构

单体架构

单体架构是最常见的架构方式,将所有功能、业务逻辑都放在一个web容器中,成为一个应用。这就是我们常说的单体架构。

例如,我们有一个小型商城系统,那么如下图所示:

360搜索在微服务架构下的技术平台实践(一) -- 单体架构

在这里,我们将所有的功能都放在一个web容器中,例如订单管理、商品管理、支付功能、通知功能、购物车管理、物流相关等。

单体架构下,我们发现性能跟不上了,怎么办?

我们可以通过LoadBalance扩容,也就是找台机器,将web目录拷过去,把web服务器启动,然后挂在我们的LVS下即可。

360搜索在微服务架构下的技术平台实践(一) -- 单体架构

但是,很明显,单体架构下只能线性、水平的扩展,不能做到某些功能更常用就扩展某些功能。
例如,我们在上面的例子中,发现购物车的访问量比 物流、支付 功能的访问量大了十倍。这个情况下,单体架构也只能将整个应用都部署到其他机器上。

单体架构的优缺点

优点:

易于开发:在项目初期、小型项目的情况下,逻辑不复杂,功能也比较单一,开发起来很直观也很方便。
易于部署:直接找一台机器,把目录/war包 拷过去启动web服务就可以用。
易于水平扩容:直接找一台机器,把目录/war包 拷过去启动web服务,然后挂在LVS下即可。

缺点:

过载的web容器:所有的功能都在一个war包中。
难以持续集成:每次打包就得花半天
功能扩展困难:牵一发动全身,改一个,测全部
技术栈单一且易过时:其实我们做技术的人,都会有一定的技术追求,都希望用最酷的技术来做最酷的事情。但现在流行的技术,5年之后就已经老掉牙了,但你想对已有的单体架构做技术升级,代价大、困难大。最终只能将错就错的维护,或者是花费很大代价重构。

对单体架构的介绍就到这里,下一篇文章,将会带来 微服务思想 的介绍


推荐阅读
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
  • 微服务优雅上下线的最佳实践
    本文介绍了微服务上下线的正确姿势,避免使用 kill -9 等粗暴手段,确保服务的稳定性和可靠性。 ... [详细]
  • 端到端自动化测试框架设计 - 以京东商品搜索为例的Web应用测试
    本文将对前文介绍的京东商品搜索功能的端到端自动化测试进行总结,涵盖使用WebStorm、Node.js、Mocha、WebDriverIO及Selenium构建的测试环境,并特别讨论了如何通过会话保持用户登录状态。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 成为一名高效的Java架构师不仅需要掌握高级Java编程技巧,还需深入理解JVM的工作原理及其优化方法。此外,对池技术(包括对象池、连接池和线程池)的应用、多线程处理、集合对象的内部机制、以及常用的数据结构和算法的精通也是必不可少的。同时,熟悉Linux操作系统、TCP/IP协议栈、HTTP协议等基础知识,对于构建高效稳定的系统同样重要。 ... [详细]
  • Spring Boot 初学者指南(第一部分)
    本文介绍了Spring Boot框架的基础知识,包括其设计理念、主要优势以及如何简化传统的J2EE开发流程。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
author-avatar
乳酪杳杳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有