首页 > 其他分享 >六位一体Serverless化应用,帮你摆脱服务器的烦恼

六位一体Serverless化应用,帮你摆脱服务器的烦恼

时间:2023-04-03 11:35:17浏览次数:49  
标签:Serverless 服务 函数 六位 数据库 开发者 服务器

随着互联网技术的飞速发展,越来越多的应用横空出世,是以不可避免带来了大量的服务器需求。大部分的开发者都选择购买或者租用服务器,然而这样也带来了诸多的烦恼。

1.硬件成本高昂

购买服务器费用昂贵,除了基础的购买费用外,服务器对机房也有苛刻的要求,温度、湿度、防震等等的高要求都需要开发者投入大量的成本。租用服务器虽然不需要考虑服务器环境的问题,但一个性能强大的服务器也需要花费一大笔租赁费用。这些费用也许对一些大公司来说并不算什么,可对于一个刚刚起步的小项目却是无力承担的。

2.硬件资源浪费

为了能够应对应用可能遇到的流量高峰,开发者往往需要租用大量能够支撑流量上限的服务器,因此租用成本飙升。同时,在流量平稳时会存在服务器资源闲置的情况,亦造成不小的浪费。

3.维护成本可观

除了硬件上的花费,服务器的维护也需要人力支持。运维人员需要7*24小时的监控服务器状态,来应对可能出现的服务器宕机情况。

4.无法开箱即用

      服务器购买或者租用回来后并不能立刻投入工作,还需要开发者对服务器进行调试、部署、测试等,才能让这些服务器最终投入使用。

服务器带来的烦恼还有很多很多,面对这些弊端,业界Serverless概念正在迅速兴起。其无需开发者购买或者租用服务器,Serverless服务商已经将服务器所需要的资源、部署、维护等统统完成了,开发者只需要接入Serverless服务商封装好的不同服务,即可基本满足他们对服务器的功能需求

我们的男主HUAWEI AppGallery Connect(以下简称AGC)提供的Serverless服务就将服务器的开发分解成了几个不同的组件:有构建用户鉴权系统的认证服务、有承载服务器逻辑的云函数、有存放数据的云数据库、有存放资源的云存储、有托管前端页面的云托管,还有解决高并发并提升项目响应速度的云缓存等等。

六位一体Serverless化应用,帮你摆脱服务器的烦恼_Server

开发者只需要聚焦自身的业务逻辑,将他们分解配置到对应的服务中就可以正式上线运行,免除了诸如服务器的购买或租用、维护的人力、环境的部署等与业务无关的繁琐事务。

瑞地科技健康管理平台在开发中即接入了Serverless服务,降本效果显著。

其整个平台分为健康管理小程序、管理中心和咨询师管理,一个移动端、两个平台,共享一套数据库内的数据。基于业务本身,他们的痛点很明显:① 至少需要两个后台开发团队同步开发才能保证开发周期,②测试环境、演示环境、正式环境,多环境部署及优化后再部署,细节多容易出错。

接入AGC Serverless服务后,高效解决了上述困境,其后端开发在保障项目进度的同时人员缩减一半,人力成本降低50%,且Serverless免运维的特性亦使得运维成本降低100%。

如瑞地科技健康管理平台这般,Serverless在项目的WEB管理系统中要如何应用?下面就详细给大家分享下。

WEB管理系统,Serverless化的逻辑架构示意图如下。

六位一体Serverless化应用,帮你摆脱服务器的烦恼_Server_02

WEB前端

项目管理系统的前端是WEB页面,用户通过网址访问。作为一个管理系统,用户首先接触到的应该就是登录功能了。AGC提供的认证服务提供了快速构建登录系统的能力。通常用户习惯的登录方式如手机号码、邮箱或公司内部的帐号,认证服务都可以满足。开发者无需与手机运营商对接或者自行搭建邮箱服务器,只需集成认证服务的Web SDK就可以直接接入整套的手机号码和邮箱地址的登录,包括登录/注册/发送验证码等功能。所有接口都是免费调用,唯一的收费项就是发送验证码所产生的短信费用。此外,认证服务还为后续的其它Serverless服务提供用户鉴权能力。

后端微服务

用户帐号系统搭建完成后,我们就来到了项目的后端逻辑部分。通过逻辑架构示意图我们可以看出这个后端系统中最核心的部分就是云函数和它所承载的后端逻辑。其后端的微服务是采用Spring Boot框架开发,我们可以选择通过HTTP请求调用的自定义运行时函数方式来进行云函数改造。Spring Boot框架的微服务逻辑无需太大改造,只需要在项目中创建一个对外暴露的invoke接口,外部在调用函数时通过这个invoke接口做统一逻辑分发即可。

invoke接口的代码样例:

@RequestMapping(path = "/invoke", method = RequestMethod.POST)
public Object postSimple(HttpServletRequest req, @RequestBody JSONObject body)

六位一体Serverless化应用,帮你摆脱服务器的烦恼_Server_03

接口添加完成后,我们就可以将微服务打包成jar包,并按照如下的格式准备函数包并上传部署即可。

function.zip
|---bootstrap //可执行文件,启动Server
|---WiseFunctionCustomDemo.jar
|---其他相关代码和依赖等

六位一体Serverless化应用,帮你摆脱服务器的烦恼_Server_04

其中bootstrap文件示例如下

#!/bin/bash
java -jar WiseFunctionCustomDemo.jar

六位一体Serverless化应用,帮你摆脱服务器的烦恼_Server_05

函数准备好后,我们就可以通过创建函数时生成的HTTP请求地址来触发函数。

后端系统除了函数承载的逻辑外,还需要存放数据的数据库、存放文件的存储系统、支撑函数高并发和快速响应等性能指标的缓存。在这,云数据库,云存储和云缓存可以为你一一实现。

      所有的数据库和存储的操作都可以由云函数统一管理,只需要接入对应服务的Server SDK,即可进行数据库的增删改查以及文件的存储下载分发。云缓存服务也提供了对应的SDK进行管理,由于云缓存服务是基于Redis打造,故对于熟悉Redis的开发者可以极速上手。

部署上线

前端后端都愉快的打造完成,最后一步就是部署上线了。为了贯彻0服务器的宗旨,整个管理系统网页的部署可以通过云托管服务来进行。开发者前端的软件包直接上传托管在云托管中,并选择使用自己通过国家备案的域名来进行访问,这样不需要任何的服务器便能让外部用户直接访问整个系统。

云函数、云数据库、云存储、云缓存、云托管、认证服务,AGC提供的这些服务在项目中六位一体的实现了WEB管理系统Serverless化,就此将服务器的烦恼统统甩到“云”后。

另外,目前云函数、云数据库、云存储、认证服务已覆盖鸿蒙应用/鸿蒙元服务的开发,全面助力鸿蒙开发者。

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh


标签:Serverless,服务,函数,六位,数据库,开发者,服务器
From: https://blog.51cto.com/u_14772288/6165866

相关文章

  • CentOS7服务器2T及2T以下磁盘挂载
    CentOS7服务器2T及2T以下磁盘挂载目录CentOS7服务器2T及2T以下磁盘挂载0.环境信息1.详细挂载步骤1.1.查看当前系统磁盘使用情况1.2.查看是否有未知硬盘未挂载1.3.分区1.3.1.依次输入以下命令1.4.格式化分区1.5.挂载硬盘1.5.1.创建挂载目录——挂载点/挂载位置1.5.2.挂载硬......
  • Python 多线程死循环挂服务器时CPU占用过高问题
    我的某个程序里有这样一段代码,把程序挂在服务器爬取信息,因此用到死循环,同时又需要进行三个任务,于是使用了多线程。刚开始在死循环部分并没有加time.sleep(60),于是它一直在for循环,同时会进行.is_alive()(不确定这个消耗大不大),但总之这使得CPU占用过高。而加上sleep之后,直接就降下......
  • Current request is not a multipart request 在tinymce中用XMLHttpRequest上传图片
    1、尝试解决。将header的content-type参数的值改为multipart/form-data。接着就报了therequestwasrejectedbecausenomultipartboundarywasfound 2、网上的方法都试遍了,发现还是无法找到解决方法。 最后的解决办法:将GET请求方法,改为POST就可以了。 ......
  • web服务器的配置
    以下是本文的部署环境:后端架构django==4.1.7服务器平台:阿里云服务器配置:CPU&内存:2核(vCPU)2GiB操作系统:Ubuntu22.04LTS64位实例规格:ecs.t6-c1m1.large(性能约束实例)实例规格族:ecs.t6当前使用带宽:1Mbps硬盘:40GB这里省略连接服务器的步骤,推荐使用vsc......
  • Linux系统下Samba服务器的配置
     实训目的:掌握Samba服务器的主配置文件的设置;掌握Samba服务用户的添加及权限设置;掌握Samba客户机的应用。实训环境:操作系统为CentOS7的网络服务器。实训步骤:第1步:将目录/home/media设置为允许所有用户访问,但仅允许用户mary具有修改该目录的权限。其配置步骤简述如下。1)......
  • Squid代理服务器
    一、Squid代理服务器Squid主要提供缓存加速、应用层过滤控制、web服务隐藏真实IP(安全性)的功能。1、代理的工作机制代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。2、代......
  • 远程服务器(腾讯云轻量服务器)上安装SQL Server以及SQL Server Management Studio,以及EF
    SQLServer的安装下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads安装教程参考:https://blog.csdn.net/qq_51929833/article/details/122625809其中,这一步非常关键,因为在后续SSMS中,选用"SQLServer身份验证"时候的密码,默认用户名都是"sa"SQLServe......
  • 本地Linux主机使用SFTP上传文件到Linux云服务器_弹性云服务器 ECS
    本地Linux主机使用SFTP上传文件到Linux云服务器_弹性云服务器ECS_文件上传_ (dawuzhe.cn)更新时间:2020/12/15GMT+08:00操作场景本节操作以CentOS操作系统为例,介绍配置SFTP、使用SFTP上传或下载文件、文件夹的操作步骤。 操作步骤以root用户登录云服务器。执行以......
  • Linux服务器MySQL操作总结
    目录1.Navicat连接服务器MySQL2.如何查看MySQL用户名和密码3.修改MySQL的登录密码4.安装MySQL开发包(Centos7版)错误:error1045(28000):accessdeniedforuser'root'@'localhost'(usingpassword:yes)1.Navicat连接服务器MySQL1.选择数据库直接使用第一个MySQL即可......
  • [白嫖系列]白嫖 IBM LinuxOne 服务器教程
    上篇文章说最近整(白嫖)了台ibm的服务器,今天教程不就来了(◦˙▽˙◦)简单介绍一下服务器配置硬盘:50GCPU:2H内存:4G带宽:1G地域:美国纽约时间:120天(以邮件为准)架构:s390x1、前期准备国外邮箱如:outlook,gmail,Hotmail(国内也行,建议国外)英文基础,看不懂英文请使用浏览器翻译插......