一、前言:
前段时间,在做大企业采购寻源业务的整体上云项目的过程中,对普通企业上云的技术要点有了一些初步的认知,同时,对VPC,CSB,EDAS等优秀的产品印象深刻。在帮客户搭建VPC系统及运维的过程中,对EDAS也有着自己的个人理解。
EDAS 是一个围绕应用和微服务的PaaS平台,提供多样的应用发布和轻量级微服务解决方案,帮助用户解决在应用和服务管理过程中监控、诊断和高可用运维问题;
提供Spring Cloud和Dubbo的运行环境。Dubbo继续开始更新之后,越来越多的名星企业热衷使用Duubo作为企业RPC解决方案。而EDAS也天生对Dubbo协议支持良好,所以为大中小企业的应用上云铺平了道路,一切都显得是那么的自然。
最近,参加了阿里云的技术共创征文,于是参加了阿里云EDAS Serverless 参照官方demo体验了一把。
二、业务挑战:
今天大多数公司在开发应用程序并将其部署在服务器上的时候,无论是选择公有云还是私有的数据中心,都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等。并需要部署运行应用程序和依赖的软件到基础设施之上。假设我们不想在这些细节上花费精力,是否有一种简单的架构模型能够满足我们这种想法?这个答案已经存在,这就是今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。
微服务(MicroService)是软件架构领域业另一个热门的话题。如果说微服务是以专注于单一责任与功能的小型功能块为基础,利用模组化的方式组合出复杂的大型应用程序,那么我们还可以进一步认为Serverless架构可以提供一种更加“代码碎片化”的软件架构范式,我们称之为Function as a Services(FaaS)。而所谓的“函数”(Function)提供的是相比微服务更加细小的程序单元。例如,可以通过微服务代表为某个客户执行所有CRUD操作所需的代码,而FaaS中的“函数”可以代表客户所要执行的每个操作:创建、读取、更新,以及删除。从这一层意思来说,我们可以简单地将Serverless架构与FaaS概念等同起来。
1.Serverless是什么
Serverless是变革。过去十年来,我们已经把应用和环境中很多通用的部分变成了服务。Serverless也有这样的趋势——如把主机管理、操作系统管理、资源分配、扩容,甚至是应用逻辑的全部组件都外包出去,把它们都看作某种形式的商品——厂商提供服务,我们掏钱购买。这是云计算向纵深发展的一种自然而然的过程。
但是,Serverless给应用架构带来巨大的变化。直到现在,大多数云服务并没有从根本上改变我们设计应用的方式。比如,使用Docker时,把一个小“箱子”放到应用边上,但是它仍然是一个箱子,而我们的应用也没有显著改变。当我们把自己的MySQL实例托管到云上时,还是要思考需要怎样的虚拟机来处理负载,考虑故障转移问题。
Serverless带来跃进式的变化。Serverless FaaS开启的是一种全新的应用架构,完全由事件驱动。更细粒度的部署,需要在 FaaS 组件外面持久化状态。Serverless FaaS把我们从编写逻辑组件中解放出来,但是我们必须将应用与云厂商提供的特定接口与模式集成。
- 在 Serverless 应用中,开发者只需要专注于业务,剩下的运维等工作都不需要操心
- Serverless 是真正的按需使用,请求到来时才开始运行
- Serverless 是按运行时间和内存来算钱的
- Serverless 应用严重依赖于特定的云平台、第三方服务
2.EDAS Serverless操作体验
使用EDAS Serverless 我们无需管理和维护集群与服务器,即可快速创建应用。使用 EDAS Serverless,我们可以专注于设计和构建应用程序,而不用管理运行应用程序的基础设施,这一点非常赞。并且 EDAS Serverless 根据应用实际使用的 CPU 和内存资源量进行按需付费,不用为闲置的资源付费。
EDAS 服务具有两种模式,一种是经典的集群方式,一种是 Serverless 模式。
- 在经典的 EDAS 模式中:您可以对应用创建的基础设施和容器应用进行更细粒度的控制,比如选择应用实例的 ECS 规格,自定义集群类型。除了应用服务的本身的创建管理,您还需创建和管理应用的集群和服务器。
- 在 EDAS Serverless 模式下:您无需创建底层虚拟化资源,可以直接在 EDAS Serverless 中选择实例的 CPU 和 Memory 规格并选择 War 包、Jar 包或镜像的部署方式进行应用部署。注意:EDAS Serverless 支持通用的 War 包和 Jar 包部署,如 Dubbo War/Jar,Spring War/Jar 等,但暂时还不支持 HSF 应用通过 War 包和 Jar 包部署,仅支持 HSF 应用通过镜像部署。
四、支持原生Dubbo和Spring Cloud操作体验:
近几年微服务的发展如日中天,而dubbo开源若干年不更新的情况下重启更新,对互联网行业的发展更是添了一把明火。因为EDAS对Dubbo和spring cloud的支持非常完美。
EDAS Serverless 让您无需管理和维护集群与服务器,即可快速创建应用。使用 EDAS Serverless,我们可以专注于设计和构建应用程序,而不是管理运行应用程序的基础设施。
以下任务将帮助您在 EDAS Serverless 集群中使用 Jar 包部署应用来实现 Dubbo 微服务的注册和发现。
4.1 开通EDAS serverless
也就是开通阿里云FAAS(函数即服务,即阿里云函数计算),如下图:
4.2 创建VPC
一般情况下,当对网络有较高的安全要求时,建议创建 VPC、添加 ECS 实例,这里我以VPC为例子。
- 创建 VPC
- 如果您打算创建 ECS 集群、发布普通应用,并对网络没有安全要求,可以跳过此步骤,使用经典网络即可。
- 登录专有网络控制台,创建 VPC。详细步骤请参考搭建专有网络。
- 说明:如果您尚未开通专有网络 VPC 服务,需要点击开通专有网络服务。进入 VPC 售卖页面,阅读并勾选专有网络VPC 开通协议,然后单击立即开通。
- 将 VPC 同步到 EDAS 控制台中。
- 登录 EDAS 控制台,在左侧导航栏中选择资源管理 > VPC 。
- 在 VPC 页面中选择创建的 VPC 所在地域(如:华东1),在页面右上角单击同步 VPC 。
- 确认创建的 VPC 已同步到 EDAS 控制台。
创建 ECS 实例
- 登录 EDAS 控制台。
- 在左侧导航栏中选择资源管理 > ECS。
- 选择您要创建 ECS 实例的地域及命名空间(可选),在页面右上角单击创建实例。
- 在 ECS 购买页面,根据您的需要,参考创建 ECS 实例,完成 ECS 的规格配置和支付。
4.3 创建命名空间
在地域(Region)中构建的隔离的资源环境。 当您对资源有较高的安全要求时,需要创建命名空间。
5.4 基于Dubbo创建服务提供者和消费者
5.4.1 服务提供者
此服务提供者提供了一个简单的 echo 服务,并将自身注册到服务发现中心。
注意:目前 EDAS Serverless 正在公测中,只开放了华北 2 (北京)和华东 1 (杭州)区域 。
-
登录 EDAS 控制台。
-
进入 EDAS Serverless 控制台。
- 在控制台左侧导航栏选择应用管理。
- 在页面左上角切换地域到 华北 2 (北京)或华东 1 (杭州)。
- 在页面右上角单击创建 Serverless 应用(公测),然后在确认切换至 EDAS Serverless 版对话框中单击确定进入创建应用页面。
在创建应用在应用基本信息页签内,设置应用相关信息,然后单击下一步:应用部署配置。
- 应用名称:输入应用名称。允许数字,字母,下划线以及中划线组合,仅允许字母开头,最大长度 36 个字符。
- 命名空间:在下拉菜单中选择命名空间。如果不知怎么选择时可选命名空间为默认。
- VPC 网络:在下拉菜单中选择一个VPC 和 vswitch 。
- 应用实例数:选择要创建的实例个数。
- 实例规格:单击请选择,在选择实例规格页面内选择实例的 CPU 和 Memory 规格。当完成选择后会在应用基本信息页面显示所选择的规格。
- 应用描述:填写应用的基本情况,输入的描述信息不超过100个字符。
在应用部署配置页面,选择 Jar 包部署,按照页面指示进行配置。完成设置后单击确认创建。
-
Java 环境:选择 JDK7 或 JDK8。
-
文件上传方式:可选择上传 Jar 包或 Jar 包地址两种方式来上传。
- 上传 Jar 包:下载 service-provider,待样例下载完成之后单击选择文件,选择刚下载 Jar 包 service-provider 并上传。
- Jar 包地址:右键单击 service-provider 并单击选择复制链接地址,将该地址粘贴在Jar 包地址栏中。
注意:应用部署程序包名仅允许字母、数字,及中划线“-”、下划线“_”四个特殊符号。
-
版本:设置版本(如:1.1.0),不建议用时间戳作为版本号。
-
启动命令设置(可选):参照如何设置 Jar 启动命令配置。
-
Hosts 绑定设置(可选):参照如何设置 Hosts 绑定配置。
-
应用健康检查(可选):参照如何设置应用健康检查配置。
5.4.2 服务消费者
参照上面的服务提供者的步骤创建服务消费者。
- 在应用列表页面右上角单击创建 Serverless 应用。
- 在应用基本信息页面,输入应用相关信息,然后单击下一步:应用部署配置。
- 应用名称:输入与服务提供者区分开的应用名称。允许数字,字母,下划线以及中划线组合,仅允许字母开头,最大长度 36 个字符。
- 命名空间:选择与服务提供者相同的命名空间。
- VPC 网络:在下拉菜单中选择选择与服务提供者相同的 VPC 和 vswitch。
- 应用实例数:选择要创建的实例个数。
- 实例规格:单击请选择,在选择实例规格页面内选择实例的 CPU 和 Memory 规格。当完成选择后会在应用基本信息页面显示所选择的规格。
- 应用描述:填写应用的基本情况,输入的描述信息不超过100个字符。
-
在应用部署配置页面,选择 Jar 包部署,完成设置后单击确认创建。
- Java 环境:选择 JDK7 或 JDK8。
-
文件上传方式:可选择上传 Jar 包或 Jar 包地址两种方式来上传。如果选择 Jar 包地址,则在配置栏填写 Jar 包的地址。
- 上传 Jar 包:下载 service-consumer,待样例下载完成之后单击选择文件,选择刚下载 Jar 包 service-consumer 并上传。
- Jar 包地址:右键单击 service-consumer 并单击选择复制链接地址,将该地址粘贴在Jar 包地址栏中。
注意:应用部署程序包名仅允许字母、数字,及中划线“-”、下划线“_”四个特殊符号。
- 版本:设置版本(如:1.1.0),不建议用时间戳作为版本号。
- 启动命令设置(可选):参照如何设置 Jar 启动命令配置。
- Hosts 绑定设置(可选):参照如何设置 Hosts 绑定配置。
- 应用健康检查(可选):参照如何设置应用健康检查配置。
-
在创建完成页面单击应用详情页,进入应用详情页查看应用的基本信息和实例部署信息。在应用详情页中实例部署信息页签查看实例的运行状态,如果运行状态显示为绿色的 Running,说明应用发布成功
5.4.3 服务调用验证
1、在左侧导航栏单击应用列表,在应用列表中找到您所创建的服务提供者和服务消费者应用,单击应用名称进入应用详情页。通过查看服务列表和实时日志可以验证应用成功发布并互相调用。
2、在左侧导航栏单击服务列表,可以分别查看应用发布和消费的服务。
- 服务提供者可以在发布的服务页签查看到所发布的服务。
- 服务消费者可以在消费的服务页签查看到所消费的服务。
- 进入服务消费者应用,在左侧导航栏单击实时日志,可以看到消费者服务在不断输出 hello,12345。