作为 Java 开发程序员,你知道什么是 Serveless 架构吗?(上)

简介: Hello 大家好,我是阿粉,在了解什么是 Serveless 架构之前,我们先看下传统的项目发布和部署的流程是什么样子的。物理机

物理机

最初的时候每个公司如果想发布自己的应用,则需要建设自己的机房,然后购买服务器主机,组装路由器交换机和网络,网络通了过后还要安装 Linux 系统以及安装各种软件,最后将开发完成的 Java 项目打包放到 Tomact 容器里面或者以 Jar 包的形式运行起来对外服务。这个过程好一点的公司是通过 JenkinsCICD 的方式来完成的,但是更有很多公司是通过人工手动拷贝的方式来进行的。这种方式很容易出错,而且也不方便回滚,更无法应对高峰期的缩扩容。每次升级部署的时候都是一个很艰巨的任务,如果说业务初期这种方式还是可以的,不需要多大的成本,但是当我们的业务发展到一定程度的时候,需要开发的部署的服务越来越多的时候就不行了。

48.jpg

简单的形式如上图所示,在自建机房的时候还是要考虑很多细节问题的,比如机房温度往往都较高所以要安装空调;然后如何保证机房长期不断电,毕竟机房如果断电服务将不可用。

云主机

物理机的机房建设对于很多公司来说不会考虑,因为并没有相应的能力去建设。所以很多公司往往采用的是购买云主机的方式来部署服务,云主机的方式与物理机的区别就是不用自己去搭建机房,不用考虑机房的建设和机器的维护,这些都是云厂商负责。国内知名的云厂商有阿里云,腾讯云,华为云等。根据自己服务的要求我们可以选择购买对应配置的云主机,自有选择内存和硬盘以及带宽等配置。

虽然说云主机解决了我们不用建设机房的问题,但是在整个过程中我们依然需要关注服务器的状态,内存是不是不够了,磁盘是不是不够了,高峰期的时候需要及时购买服务器去扩容,低峰期的时候又不能立马退掉机器,对于我们开发或者运维的同学来说还是要对服务器进行管理。

对于很多公司来说目前的服务部署都是基于云主机的,通过购买云主机自建各种组件的集群用于支持自己的服务器,这无疑更加增加了对服务器的维护成本以及人力成本。

Serveless 架构

既然上面的架构都有缺点,那有没有一种方式可以免去开发同学和运维同学的一些烦恼呢?答案是肯定的,随着云原生开发模型的诞生 Serveless 架构被大家广泛提出。

Serveless 无服务器架构是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。

Serveless 架构中文是无服务器架构 ,是一种基于云原生的开发模型,虽然说的是无服务器但是并不代表不需要服务器,只是表示的是开发人员不需要关注服务器,只需要关注应用的构建即可。对于服务器可以做到透明,整个服务器的管理和维护完全由云厂商来负责,开发人员只需要将自己的应用打包到容器中即可对外提供服务。

同时在收费的方面也有了很大的变化,不管是上面自己搭建机房亦或是购买云主机,在服务不使用的时候依然会产生相应的费用,但是,基于云原生的 Serveless 方式,只有在服务被使用的时候才会产生计费,无请求的时候是不会产生任何费用的。另外对于服务的扩容和缩容由于是基于云原生的容器部署的,所以可以做到即时动态扩容和缩容来适配流量的峰值情况。

Serveless 架构还有以下优点

  1. 降低运营和开发成本;
  2. 自动扩缩容;
  3. 更简单的架构和高效的性能;

Serveless 架构的产品通常分为两类,分别是 BaaS 后端即服务,另一种是 Faas 功能即服务。BaaS可以让开发人员访问各种第三方服务和应用,可以使用很多云厂商提供的服务,包括认证,加密,数据库等;不过我们经常提到的 Serveless 通常指的是 FaaSFaaS 模型下我们通常还是正常的编写业务逻辑,只不过是可以完全运行在云厂商提供的容器里面。

FaaS 功能即服务

FaaS 是一种事件驱动计算模型,开发人员正常的编写业务逻辑,部署到云厂商的容器中,然后按需执行。容器是由云厂商提供的,无状态的,并且能随停随启的基于事件驱动的,在需要的时候自动运行。

对于我们开发人员来说,实现了 Serveless 架构过后,我们的整个架构就变了,以一个简单的 web 应用为例,在我们以前的架构简化成下面这边样子49.jpg

但是当我们切换到 Serveless 架构的时候,整个架构就变成了下面这个样子

50.jpg

可以看到整个架构已经处于服务器不可见的状态了,对于开发人员不需要关心具体的服务器了,只需要关注自己的业务逻辑就行,统一的接入,安全,认证和调度都交给了云厂商。

前面讲的都是原理部分,下面通过实践阿粉带大家一起看下 Serveless 应用要怎么玩,我们通过腾讯云来演示 Serveless 的玩法。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
5月前
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
|
4月前
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
4月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
4月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
4月前
|
消息中间件 运维 监控
交易所开发核心架构拆解与流程图
本文系统解析交易所架构核心要素,从接入层到清算结算,结合系统流程图拆解各模块职责与协作机制。深入剖析撮合引擎、账本设计与风控逻辑,建立性能、可用性、安全性等多维评估标准,并提供可落地的流程图绘制、压测优化与进阶学习路径,助力构建高效、安全、可扩展的交易系统。(238字)
|
5月前
|
监控 供应链 前端开发
如何开发ERP(离散制造-MTO)系统中的财务管理板块(附架构图+流程图+代码参考)
本文详解离散制造MTO企业ERP系统中财务管理模块的搭建,聚焦应收账款与应付账款管理,涵盖核心功能、业务流程、开发技巧及Python代码示例,助力企业实现财务数据准确、实时可控,提升现金流管理能力。
|
4月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
492 7
|
5月前
|
供应链 监控 JavaScript
如何开发ERP(离散制造-MTO)系统中的库存管理板块(附架构图+流程图+代码参考)
本文详解MTO模式下ERP库存管理的关键作用,涵盖核心模块、业务流程、开发技巧与代码示例,助力制造企业提升库存周转率、降低缺货风险,实现高效精准的库存管控。
|
5月前
|
前端开发 API 定位技术
如何开发车辆管理系统中的用车申请板块(附架构图+流程图+代码参考)
本文详细解析了如何将传统纸质车辆管理流程数字化,涵盖业务规则、审批流、调度决策及数据留痕等核心环节。内容包括用车申请模块的价值定位、系统架构设计、数据模型构建、前端表单实现及后端开发技巧,助力企业打造可落地、易扩展的车辆管理系统。
|
5月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
722 7