如何将APP部署在阿里云服务器上

如何将APP部署在阿里云服务器上,第1张

1,APP应用需要什么样的云服务器?

为了帮助大家了解如何使用阿里云云服务器及相关应用,阿里云的移动云团队开发了一个简单的APP应用:移动云相册,其中使用了ECS主要用作部署云相册的API服务(图片信息调用、图片列表调用)和图片缩略图处理,因为这个应用服务端使用了JAVA语言开发,因此在上面安装tomcat来部署应用。

具体部署

1)远程登录:

第一次购买ECS后,会把该ECS服务器的root账号、密码发送购买者的邮箱,然后购买者可以通过远程登录到ECS服务器,具体远程登录可以参考如下:

Windows:http://help.aliyun.com/manual?spm=5176.383518.5.16.4lLZzn&helpId=59

Linux:http://help.aliyun.com/manual?spm=5176.383518.5.16.4lLZzn&helpId=59

2)安装web环境

根据自己应用特点选择安装相关web服务器tomcat或者jetty,阿里云提供了一条龙安装部署脚本,为开发者提供了更多的方便,请参考如下链接:http://help.aliyun.com/manual?spm=0.0.0.0.RGeYy4&helpId=129

3)打包应用

将web源码下载到本地,使用命令mvnpackage打成war包。如果不是maven工程,可以用类似ant打成war包。

4)上传war包

Linux下面可以使用sftp上传war包,上传war包到指定目录后进行解压,具体使用方式参考:http://help.aliyun.com/manual?spm=0.0.0.0.PnfpSL&helpId=1848

5)启动web服务

将tomcat或jetty服务启动

6)配置反向代理、绑定域名

具体配置信息参考:http://help.aliyun.com/manual?spm=0.0.0.0.Ti7iuA&helpId=532, http://help.aliyun.com/manual?spm=0.0.0.0.MKbFj1&helpId=65

2,APP应用如何把图片存到云存储服务器中?

图片类APP应用的架构核心在于大量小文件的存储与访问,在文件数量较多的情况下将文件直接存储在硬盘上将极大影响应用的访问效率。阿里云存储服务OSS对海量小文件的存储及管理具有很大优势,图片不从服务端下载,减少了服务端压力。阿里云的OSS的备份机制也保证了文件的存储安全,其存储容量可以无限扩展,每秒请求数超过50000次,多线BGP网络确保全国各地访问流畅。

使用阿里云OSS步骤:

1)登录阿里云官网(aliyun.com)开通OSS

2)获取KEY及密钥

3)下载SDK

(JAVA版下载地址为:http://bbs.aliyun.com/job.php?action=download&aid=38817

帮助手册: http://aliyun_portal_storage.oss.aliyuncs.com/oss_api/oss_javahtml/index.html )

4)开始APP开发

很简单吧,下面是一个使用阿里云的OSS上传图片的代码样例:

StringupLoadURI = OSSClient.generateUploadUrl(Constants.SERVER_URL.GENERATE_URL,fileName, null)

int status =OSSClient.uploadFile(upLoadURI, path)

3,APP上云后如何使用云数据库?

为了帮助大家了解如何使用阿里云云服务器及相关应用,阿里云的移动云团队开发了一个简单的APP应用:移动云相册,其中使用了RDS中提供的MYSQL服务,数据库中主要存储了用户上传的图片信息,包括原图、缩略图的信息及存储地址,通过WEB端API向客户端提供数据调用。

使用阿里云RDS和使用本地数据库基本上没有区别,使用样例如下:

1)创建数据库实例

使用阿里云账号购买RDS后,可以创建数据库实例。

2)创建数据库以及管理账号

创建数据库名称以及管理账号,用于应用程序调用数据库连接。

3)访问数据库:

创建完数据库(test)后,在数据库test里添加账户:test、密码:test,可以在RDS控制台查看到数据库相关信息,从中能够得到数据库的外网地址如:xxxx.mysql.rds.aliyuncs.com,可以使用应用程序连接数据库,javajdbc连接数据库示例代码如下:

String url = “jdbc:mysql://xxxx.mysql.rds.aliyun:3306/test”

String username = “test”

String password = “test”

try{

Connection con = DriverManager.getConnection(url ,username , password )

}catch(SQLException e){

e.printStackTrace() //需要对异常做处理

}

具体部署

1)远程登录:

第一次购买小鸟云后,会把该小鸟云服务器的root账号、密码发送购买者的邮箱,然后购买者可以通过远程登录到小鸟云服务器

2)安装web环境

根据自己应用特点选择安装相关web服务器tomcat或者jetty,小鸟云提供了一条龙安装部署脚本,为开发者提供了更多的方便

3)打包应用

将web源码下载到本地,使用命令mvnpackage打成war包。如果不是maven工程,可以用类似ant打成war包。

4)上传war包

Linux下面可以使用sftp上传war包,上传war包到指定目录后进行解压

5)启动web服务

将tomcat或jetty服务启动

6)配置反向代理、绑定域名

具体信息参考:http://www.niaoyun.com

consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架(类似zookeeper)、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个节点为以下三种状态的一种:

上图来源于 Consul 官网,很好的解释了 Consul 的工作原理。consul是一个服务管理软件,主要功能如下:

有些人可能对服务注册和发现还没有概念,有些人可能使用过其他服务发现的工具,比如 ZooKeeper,etcd,会有一些先入为主的经验。本文谈一下 Consul 做服务发现的实践和原理。

下面这张图描述了服务发现的完整流程,先大致看一下:

首先需要有一个正常的 Consul 集群,有 Server,有 Leader。这里在服务器 Server1、Server2、Server3 上分别部署了 Consul Server。

假设他们选举了 Server2 上的 Consul Server 节点为 Leader。这些服务器上最好只部署 Consul 程序,以尽量维护 Consul Server 的稳定。

然后在服务器 Server4 和 Server5 上通过 Consul Client 分别注册 Service A、B、C,这里每个 Service 分别部署在了两个服务器上,这样可以避免 Service 的单点问题。

服务注册到 Consul 可以通过 HTTP API(8500 端口)的方式,也可以通过 Consul 配置文件的方式。

Consul Client 可以认为是无状态的,它将注册信息通过 RPC 转发到 Consul Server,服务信息保存在 Server 的各个节点中,并且通过 Raft 实现了强一致性。

最后在服务器 Server6 中 Program D 需要访问 Service B,这时候 Program D 首先访问本机 Consul Client 提供的 HTTP API,本机 Client 会将请求转发到 Consul Server。

Consul Server 查询到 Service B 当前的信息返回,最终 Program D 拿到了 Service B 的所有部署的 IP 和端口,然后就可以选择 Service B 的其中一个部署并向其发起请求了。

如果服务发现采用的是 DNS 方式,则 Program D 中直接使用 Service B 的服务发现域名,域名解析请求首先到达本机 DNS 代理,然后转发到本机 Consul Client,本机 Client 会将请求转发到 Consul Server。

Consul Server 查询到 Service B 当前的信息返回,最终 Program D 拿到了 Service B 的某个部署的 IP 和端口。

图中描述的部署架构笔者认为是最普适最简单的方案,从某些默认配置或设计上看也是官方希望使用者采用的方案,比如 8500 端口默认监听 127.0.0.1,当然有些同学不赞同,后边会提到其他方案。

consul必须启动agent才能使用,有两种启动模式server和client,还有一个官方自带的web ui。server用与持久化服务信息,集群官方建议3或5个节点。client只用与于server交互。ui可以查看集群情况的。

server模式启动如下:

参数解释:

client启动如下:

client节点可以有多个,自己根据服务指定即可。

ui启动如下:

参数解释:

集群创建完成后:

使用一些常用的命令检查集群的状态:

可以在raft:stat看到此节点的状态是Fllower或者leader

新加入一个节点有几种方式;

访问ui:

http://192.168.1.198:8500/ui

端口:

8300:consul agent服务relplaction、rpc(client-server)

8301:lan gossip

8302:wan gossip

8500:http api端口

8600:DNS服务端口

输入 consul agent -dev

在浏览器中输入 www.localhost:8500 就可以启动web查看

consul注册服务,有三种方式,

方式一:通过配置文件的方式静态注册

创建文件夹/etc/consul.d

.d代表有许多配置文件在里面

vim /etc/consul.d/jetty.json 内容如下:

重启consul,并将配置文件的路径给consul(指定参数:-config-dir /etc/consul.d)

方式二:通过HTTP API接口来动态注册

直接调用/v1/agent/service/register接口注册即可,需要注意的是:http method为PUT提交方式。如:

注意,这种方式,和上面的注册方式有一点不一样,body的参数,是上面service的值,这点需要注意

方式三:使用程序实现服务的注册和发现(Java)

首先加入consul client的依赖

服务发现

consul支持两种方式实现服务发现,一种是通过http API来查询有哪些服务,另外一种是通过consul agent 自带的DNS(8600端口),域名是以NAME.service.consul的形式给出,NAME即在定义的服务配置文件中,服务的名称。DNS方式可以通过check的方式检查服务。

服务间的通信协议

Consul使用gossip协议管理成员关系、广播消息到整个集群,他有两个gossip pool(LAN pool和WAN pool),LAN pool是同一个数据中心内部通信的,WAN pool是多个数据中心通信的,LAN pool有多个,WAN pool只有一个。

https://www.toutiao.com/a6639493728086000142/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1546144777&app=news_article&utm_source=weixin&iid=55667270026&utm_medium=toutiao_android&group_id=6639493728086000142


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/113784.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-12
下一篇2023-03-12

发表评论

登录后才能评论

评论列表(0条)

    保存