作为 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 的玩法。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
5天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
1天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【4月更文挑战第24天】 随着现代软件系统的复杂性日益增加,传统的单体应用已难以满足快速迭代与灵活扩展的需求。微服务架构作为一种新兴的软件开发模式,以其服务的细粒度、独立部署和弹性伸缩等优势,正在逐渐成为后端开发的重要趋势。本文将深入探讨微服务架构的设计原则、关键技术以及在实际业务中的应用实践,旨在为后端开发者提供构建和维护高效微服务架构的参考指南。
|
1天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
3天前
|
监控 API 持续交付
构建高效微服务架构:后端开发的新趋势
【4月更文挑战第23天】 随着现代软件开发实践的不断演进,微服务架构已经成为企业追求敏捷、可扩展和弹性解决方案的首选。本文深入探讨了如何构建一个高效的微服务架构,涵盖了关键的设计原则、技术选型以及实践建议。通过分析微服务的独立性、分布式特性和容错机制,我们将揭示如何利用容器化、服务网格和API网关等技术手段,来优化后端系统的可维护性和性能。文章旨在为后端开发人员提供一套全面的指南,以应对不断变化的业务需求和技术挑战。
|
6天前
|
IDE Java 数据库连接
使用 Java 进行桌面应用开发
【4月更文挑战第19天】Java 是一款广泛应用于企业级、网络和桌面应用开发的编程语言。其跨平台特性使Java程序能在不同操作系统上运行,而JDK提供了开发所需工具和库。使用Swing等GUI库构建用户界面,结合JDBC进行数据库操作,Socket实现网络通信。虽然面临性能和用户体验的挑战,但通过优化和选用合适的IDE,Java仍能开发出高效稳定的桌面应用。
|
7天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
7天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
146 10
|
7天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
8天前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新趋势
【4月更文挑战第18天】在数字化转型的浪潮中,微服务架构已成为企业提升系统灵活性、加速产品迭代的关键。此文深入探讨了构建高效微服务架构的实践方法,包括服务划分原则、容器化部署、持续集成/持续部署(CI/CD)流程以及监控与日志管理等关键技术点。通过分析具体案例,揭示了微服务在提高开发效率、降低维护成本及促进团队协作方面的显著优势。
|
9天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。