微服务概述之单体架构

微服务概述

互联网始于 1969年美国的阿帕网(ARPA),最开始的阿帕网只在美国军方使用。随着时间的推移,一些大学也开始加入建设,慢慢演化成了现在的因特网 (Internet)。随着计算机网络的普及,到现在全世界几乎一半的人口,都在使用互联网产品。日常生活中的各种场景,如商场购物、沟通交流、金融理财、货运物流等,都可以在网上实现。随着网上的应用越来越多,用户也越来越多,业务场景也越来越复杂,传统的单体应用已经无法满足互联网技术的发展要求。随着业务复杂度的逐渐提升,代码的可维护性、可扩展性和可阅读性在逐步降低,修改和更新代码的风险也变得越来越高。而技术作为业务的支撑,它永远伴随着业务的发展而发展,所以为了解决单体应用的缺点,诞生了微服务。

最近几年,微服务很受欢迎,无论是在公司的实际开发应用中,还是在技术人员之间的日常话题交流中,微服务的技术都是主流。微服务概念是著名的 IT 专家 Martin Fowler提出来的,它是用来描述将软件应用程序设计为独立部署服务的一套思想,一般按照业务进行服务划分,它有自动化运维、容错、快速迭代的特点,给软件领域带来了巨大的影响。

那么,微服务是怎么一步一步演进到现在的?在实际生产开发中,如何正确使用微服务呢?这些问题一定要先搞清楚,否则做微服务项目,就会做成大型的分布式单体应用。

要知道任何技术和方案的形成都不是一蹴而就的,很多思想、解决方案都是在原有理论的基础上进一步发展的。因此我们先来回顾一下软件架构的发展历程,了解这些知识会对以后的架构选型有很大的帮助。

单体架构

在传统的软件架构中,经常提到 MVC(model-view-controller)模型,也就是模型视图控制器。即

M(model)数据访问层、V(view)视图层、C(controller)业务逻辑控制层。

MVC模型

  • 模型层:即数据访问层,是业务逻辑控制器层的支撑部分,它可以向业务逻辑控制器层提供数据来源,也可以将业务逻辑控制器层处理的结果数据进行持久化。
  • 视图层:用于软件和用户的交互。例如,接收用户的输入信息,将响应信息是现给用户。一般应用都是网页、App、小程序。
  • 业务逻辑控制器层:即业务逻辑处理层,将用户输入的信息,根据一定的业务逻辑进行加工处理。

开发服务端的软件一般都是按照 MVC架构来设计的,其主要功能包括响应用户的交互、对业务流程的操作、对数据库的增删改查。虽然有三层模型的划分,但这只是在软件架构上的分层,并没有对业务场景进行划分。一个单体系统就是将所有业务场景的视图层、业务逻辑控制器层、模型层全部囊括在一个工程内,所有的功能都在一个项目中开发,开发完成后打成jar 包,或者war 包,最终部署到一台服务器上。单体应用架构如下图所示。

优点

在互联网早期,由于业务比较简单,访问量比较少,开发人员采用单体应用会有很多优点,下面从开发、测试、部署运维的角度分别进行分析。

  1. 易于开发。一般在 IDE (integrated development environment,集成开发环境)中新建一个项目就可以进行开发,开发完成后进行测试,测试通过后可以直接打包,即可部署。
  2. 易于测试。不需要其他的服务配合,直接独立运行起来,就可以进行测试,如果存在bug可以快速查找。
  3. 易于部署。只有一个jar 包,或者一个war 包,也可以将程序中用到的文件资源、数据库等直接部署到服务器上,只要服务器拥有相关的运行环境即可。
相关推荐
XUHUOJUN6 分钟前
Azure Stack Hub 市场全景——同步、下载与离线交付
架构·azure stack
努力努力再努力wz1 小时前
【分布式系统与 RPC 框架系列】从单机瓶颈到远程调用:一文理解分布式架构与 RPC 原理
linux·网络·c++·分布式·网络协议·rpc·架构
Linux-187412 小时前
分布式链路追踪系统之skywalking java agent 的使用、skywalking web界面简介
云原生·skywalking·分布式链路追踪系统·应用程序性能监控·halo博客系统·skywalking java agent·skywalking web 简介
fanly1113 小时前
Surging AI Agent:基于.NET 生态一站式本地大模型 + 向量检索微服务解决方案
微服务·.net core·microservice
童谣114 小时前
越华环保集团市级统筹申报数字化中台:政策校验与减排仿真一体化架构
数据库·架构
2601_9567436816 小时前
上海小程序开发公司技术路径全解:从架构选型到工程落地的核心判断
小程序·架构·开发经验·上海
JAVA面经实录91717 小时前
图解23种设计模式完整知识体系(Java后端面试完整版)
java·架构
AI_小站17 小时前
Loop Engineering又是啥?一文讲清企业Agent落地的四层工程进化论
java·人工智能·架构·prompt·大模型开发·智能体·大模型应用
l1t17 小时前
DeepSeek总结的DuckLake 架构深度剖析-2
数据库·架构
2601_9625029017 小时前
双工位蜡镶机控制系统工程实践:并行架构、视觉对齐与实时同步避坑指南
架构