Download presentation
Presentation is loading. Please wait.
1
SAE Java 实际应用 在这里写上你的标题 副标题文字副标题文字 @智云0o/2012年6月 作者名字/日期
大家下午好,我是来自新浪云计算的黎智云。今天和大家分享的课题是SAE Java的实际应用。说之前问大家一个问题,大家有用过SAE Java平台的么?请大家用一个一句话描述一下 @智云0o/2012年6月 作者名字/日期
2
SAE Java 是什么 普 青:是一个Java 语言的 Paas 文 青:是一个云服务的集合
文 青:是一个云服务的集合 MySQL、Memcache、KVDB、FetchURL、Storage、TaskQueue、TmpFS、Cron、DefferedJob、Mail 、微博API、服务商店等等 这几位同学说得非常好,这个问题我在网络上问过很多人,回答大致分为三类。第一类说SAE Java是一个java的paas平台,第二类说的是SAE Java是一个包含MySQL、KVDB、Memcache等等云服务的集合,第三类说的是SAE Java平台是一个大的Java web容器 看来大家都是普通青年 二 青:是一个很大的Java Web 容器 ? 不需要维护任何服务器,只需上传的war包,它便可为你提供服务
3
SAE Java 是什么 Sina App Engine Java 提供了 安全稳定的Java运行时环境(沙盒) 强大的云服务支持(云存储)
各种应用监控和统计体系 有力的开发支持(日志) 对各种Web框架支撑 社区的支撑(Cloudbbs) …… 好,我们来看看SAE Java给我们提供了这些东西。首先给我们提供了一个安全稳定的Java运行时环境,然后是强大的云服务特别是一些云存储的支持,还提供各种应用和统计体系,当然还有有力的开发支持,对各种web框架支撑,当然还少不了社区的支撑 等等等等一些东西 那SAE Java给我们提供了这么多好用的东西我们如何来用呢,如何充分应用SAE Java平台来创造价值呢,这就是今天我和大家分享的
4
目录 1 Why SAE Java 2 SAE Java 如何用 3 SAE Java 能做什么 00 写上你的文字你的文字 01 02
03 04 05 写上你的文字你的文字 2 SAE Java 如何用 3 SAE Java 能做什么 今天主要和大家分享以上三点 为何选择SAE Java 以及SAE Java如何用 当然最重要的是SAE Java可以用来做什么 那么Why Sae java呢?
5
Why SAE Java 更快(高效开发) 更安全稳定(代码、应用) 更强大云服务(总类繁多) 更低成本(开发、迁移、维护)
更简单(易用性) 用几个短语概况一下 更快 更安全稳定 拥有更强大的云服务 更低的成本 跟简单易用
6
Why SAE Java 更快更高效 只需上传 war 包即可使用 (后期eclipse插件支持单文件上传)
强大的服务API,让你专注业务加速开发 应用访问速度更快 (强大的Sina 机房群的支撑) 问题反馈迅速高效 所谓更快更高效 表现为以下几点 使用速度快 只需要上传一个war包就可以开始使用SAE Java 另外拥有强大的服务API 让你更加专注于业务加速开发 还有一个快就是应用访问速度快 因为有强大的sina机房群的支持 当然还有一点难得的就是问题反馈快速高效
7
Why SAE Java 更安全稳定 安全的“沙盒”环境 每个应用独享 JVM 应用独享工作空间和日志空间 数据安全
分布式环境(应用、服务) keeper机制,应用永不宕机 更安全稳定 安全的应用沙盒环境 每个应用独享JVM 独享工作空间和日志空间 当然数据安全也很重要 加上应用服务和代码的分布式部署 另外我们的keeper机制 在下节课中王阳同学会给大家说的keeper机制,使得应用永不宕机
8
Why SAE Java 更多更强大的云服务 -- 云存储 MySQL/RDC
更多更强大的云服务 -- 云存储 MySQL/RDC KVDB key-value 数据分布式存储(每位用户支持100G容量) Memcache 分布式缓存 Storage 分布式文件存储 更多更强大的云服务 首先云存储 主从分布的MySQL/RDC KVDB
9
Why SAE Java 更多更强大的云服务 FetchURL 抓网页,发请求 Mail(兼容JavaMail形式发送)
TaskQueue 任务队列 TmpFS 临时IO空间 DeferredJob 离线任务队列 ( 数据库导出、导入 ) 服务商店提供服务 (第三方接入服务:短信服务、服务接入)
10
Why SAE Java 更低的成本 开发成本低 强大的API支撑(日志、社区)
迁移成本低 (支持SSH等流行web框架,各种API hook) 维护成本低 (SAE帮你完成) 使用成本低 (JVM关闭和自动伸缩、开发者认证、)
11
Why SAE Java 更简单易用 只需要上传一个war包就可开始体验 云服务API支持 多人协同开发 各类日志和报表 SVN支持
12
SAE Java 如何用 如何在SAE上创建一个Java应用 ? 本地环境搭建? 如何使用云服务 ? 如何看应用日志?
问题如何反馈 ? 以上说了这么多选择SAE Java的理由,SAE Java如何用呢,今天主要跟大家分享以下几点,首先是如何创建一个应用,sae提供这么多的云服务,如何使用这些云服务,应用日志如何查看,还有大家比较关心的SAE Java对框架的支持以及一些使用技巧和如何反馈问题
13
SAE Java 如何用 SAE Java 环境 JDK版本 1.6 WEB 服务器版本 jetty 7.x Servlet 2.5
首先介绍一下SAE Java的运行环境,JDK1.6 + Jetty 7 servlet2.5
14
SAE Java 如何用 SAE上创建一个Java应用 – 创建应用 登陆SAE 进入我的首页,点击“创建应用”,填写 App 信息
15
SAE Java 如何用 SAE上创建一个Java应用 – 创建应用 JVM 相关设置 需要上传war包才会开启 JVM
包括选择jvm数量和jvm动态伸缩的一些设置这里要提到一点就是创建了应用jvm不会立即起来,需要你上传了你的war包后才会起对应的jvm
16
SAE Java 如何用 SAE上创建一个Java应用 – 上传WAR包 网页上传:进入应用管理,先创建版本
第二部是上传war包,上传war包有两种形式,第一是网页上传,第二是svn上传,网页上传先创建一个版本,然后进到列表上传war包即可
17
SAE Java 如何用 SAE上创建一个Java应用 – 上传WAR包 网页上传:每个war包大小不能超过50M
18
SAE Java 如何用 SAE上创建一个Java应用 – 上传WAR包 SVN上传
第二种是svn的形式,按照这个地址将应用仓库checkout下来,用户名是sae安全有效,密码是sae安全密码
19
SAE Java 如何用 SAE上创建一个Java应用 – 上传WAR包 SVN上传 创建版本(文件夹),SVN 提交war包--完成
20
SAE Java 如何用 SAE上创建一个Java应用 – 完成
输入 访问应用 上传成功后就可以再浏览器输入url地址开始访问了,这样一个创建应用流程就走完了。很简单
21
SAE Java 如何用 本地环境搭建 不使用云服务:跟普通的J2EE环境无任何差异
要使用云服务:只需将sae-local.jar和依赖jar引入classpath 文档中心->开发手册->SAE Java开发手册->下载中心 那有同学会问,sae开发环境跟普通的开发环境会有什么差别么?分两种情况,一种是不使用云服务,不使用服务的话跟我们普通的j2ee的环境是没有任何差别的。第二种是使用云服务,使用云服务的话你只需要到sae官网把对应api下载下来放到classpath下即可
22
SAE Java 如何用 本地环境线上环境区别? 线上多了一层沙盒环境 服务的使用没有区别(本地只是模拟环境、相同API接口)
//自动忽略ip和port参数 SaeMemcache mc = new SaeMemcache(“localhost”,11211); 区分线上线下环境SaeUserInfo对象 取得应用的appname、version、Ak、SK 、SaeTmpPath、McIP 可读取sae.properties文件信息( MySQL 无缝结合) 那么本地环境跟线上环境有哪些区别呢,其实主要区别在于多了一层沙盒环境,云服务的使用是没有什么区别的,线上和现象的云服务实现是完全不一样的,但是拥有相同的api接口,这就保证你在迁移项目的时候不需要做任何代码的变动,以memcache这个api为例,我们线下环境的代码是,上传代码后可以不用做任何修改,那么如何区分线上和线下环境呢 我们提供一个SaeUserInfo的对象,通过这个对象我们可以拿到应用的数据比对,当然你也可以添加一个sae.properties文件来配置SaeUserInfo对象拿到的信息
23
SAE Java 如何用 如何使用云服务 MySQL、 KVDB、 Memcache、FetchURL、Storage、TaskQueue、TmpFS、Cron、DefferedJob、Mail 、服务商店 下载服务API 服务使用的doc 刚刚说了这么多,
24
SAE Java 如何用 如何使用云服务 MySQL/RDC
RDC 关系型数据库集群,一主多从的DB结构,支持千万级数据后端,监控DB健康状况和同步延迟情况,出现异常自动切换。 和传统MySQL一样来使用,使用前需要开启应用 MySQL 服务
25
SAE Java 如何用 如何使用云服务 MySQL/RDC 管理MySQL:phpMyAdmin客户端管理数据库
跨应用授权:将数据库授权给其他应用
26
SAE Java 如何用 如何使用云服务 MySQL/RDC phpMyAdmin管理数据库
27
SAE Java 如何用 如何使用云服务 MySQL/RDC 数据库信息 主库写(读)数据 从库读数据
主库域名 SAE_MYSQL_HOST_M = 'w.rdc.sae.sina.com.cn' 从库域名 SAE_MYSQL_HOST_S = 'r.rdc.sae.sina.com.cn' 端 口 SAE_MYSQL_PORT = '3307' 数据库名 SAE_MYSQL_DB = 'app_appname' 用 户 名 SAE_MYSQL_USER = access_key 密 码 SAE_MYSQL_PASS = secret_key
28
SAE Java 如何用 如何使用云服务 MySQL/RDC 原生的JDBC 代码: //主库域名 数据库名为"app_应用名称"
String url="jdbc:mysql://w.rdc.sae.sina.com.cn:3307/app_java4test"; String username=SaeUserInfo.getAccessKey(); String password=SaeUserInfo.getSecretKey(); String driver="com.mysql.jdbc.Driver"; Class.forName(driver).newInstance(); Connection con=DriverManager.getConnection(url,username,password); …… 支持数据库连接池 (dbcp)
29
SAE Java 如何用 如何使用云服务 KVDB
KV DB 高性能高可靠的 key - value 存储,采用一主多从的分布式架构,读写可达 10w qps 。每个用户支持 100G 存储空间,可支持1,000,000,000 条记录。 应用使用 KV DB 需手动开启服务 量比较大,需要频繁读写的数据,
30
SAE Java 如何用 如何使用云服务 KVDB KVDB 支持boolean、long、double、byte[] 四种类型的存储
本地使用 JavaDB 实现 需要存储对象可将对象转化成byte[] 再进行存储 SaeKV kv = new SaeKV(); kv.init(); User user1 = new User(1,"jim",21); kv.set("user1", SaeKVUtil.serializable(user1)); //get 数据 User user2 = SaeKVUtil.deserializable(kv.get("user2"));
31
SAE Java 如何用 如何使用云服务 Memcache
Memcache 分布式缓存服务,快速读写小于 1M 的数据。和标准的 Memcache一样,适合用来存储小数据。需要手动开启
32
SAE Java 如何用 如何使用云服务 Memcache
Memcache 服务提供 8 种基本类型的存储,以及String 类型,byte[] 和对象类型的存储,本地可使用Memcache模拟 SaeMemcache mc = new SaeMemcache(); mc.init(); mc.set("num", 9527); mc.set("user",new User(1,"jim",21)); //get 数据 User user2 = SaeKVUtil.deserializable(mc.get("user")); System.out.println(user2.getName()); System.out.println(mc.get("num"));
33
SAE Java 如何用 如何使用云服务 Storage / TmpFS
访问
34
SAE Java 如何用 如何使用云服务 Storage / TmpFS
TmpFS SAE提供的请求级别IO路径,请求完成后路径下的文件将会被销毁。 TmpFS 是本地临时文件,不是共享存储和持久化 可以用于请求内处理 IO ,如对图片进行处理后上传至Storage中
35
SAE Java 如何用 如何使用云服务 Storage / TmpFS Storage 配合 TmpFS 存储文件代码范例(使用)
//使用SaeUserInfo拿到TmpFS路径 String realPath = SaeUserInfo.getSaeTmpPath()+"/"; //使用common-upload 将流写到realPath下 可 ….代码省略….. SaeStorage ss = new SaeStorage(); //使用upload方法上传到域为image下 ss.upload("image", realPath+fullFile.getName(), fullFile.getName()); //当然也可以直接用SaeStorage .write()方法更加简洁 ss.write("domain" , "filename" , "filecontent!");
36
SAE Java 如何用 如何使用云服务 FetchURL
FetchURL 是为开发者提供的网页抓取服务,当然你也可以用它来发送http rest请求,弥补了Socket 暂时无法使用的缺陷 //抓取页面 SaeFetchurl fetchUrl = new SaeFetchurl(); String content = fetchUrl.fetch(" //发送post请求 fetchUrl.setMethod("post"); Map maps = new HashMap(); maps.put("name1","value1"); maps.put("name2","value2"); fetchUrl.setPostData(maps); String result = fetchUrl.fetch("
37
SAE Java 如何用 如何使用云服务 Mail
Mail 为开发者提供的分布式邮件发送服务,用来异步发送 SMTP 邮件。邮件服务兼容了JavaMail发送邮件方式,同时提供了Sa 的发送邮件接口。 Sa mail = new Sa (); //快速发送邮件
38
SAE Java 如何用 如何使用云服务 TaskQueue
TaskQueue 为开发者提供的分布式任务队列服务,用来异步HTTP方式执行用户任务 (可配合Mail发送更多的邮件) SaeTaskQueue taskQueue = new SaeTaskQueue("test"); taskQueue.addTask(" taskQueue.addTask(" “param", true); //将任务推入队列 taskQueue.push();
39
SAE Java 如何用 如何使用云服务 DefferedJob
DefferedJob 分布式离线任务队列,用于数据库的导入导出(前提开启 Storage 服务)
40
SAE Java 如何用 如何使用云服务 服务商店 第三方服务接入,更多的服务选择,自动生成API
41
SAE Java 如何用 如何看应用日志 每个应用对应的日志中心可看到应用的各种类别日志,包括JVM、HTTP、MySQL、Mail、Cron、TaskQueue
42
SAE Java 如何用 如何看应用日志 那些日志会输出到日志中心? Jetty 服务器启动和关闭日志 应用访问日志
服务使用日志( MySQL、Mail、Cron、TaskQueue ) System.out 或者System.error 输出 Log4J各级别的日志(SAE 对Log4J 进行了hook)
43
SAE Java 如何用 如何看应用日志 各级别的日志显示在哪 控制台界面显示 类别 requests
http非静态资源访问日志,server端的访问 debug log4j.debug,log4j.trace error log4j.error,log4j.fatal,(jetty启动关闭error日志) warning log4j.warning,system.err,(jetty启动关闭warn日志) notice log4j.info, system.out,(jetty启动关闭info日志) resources http静态资源访问日志,如.jgp之类的
44
SAE Java 如何用 SAE Java 对框架的支持 Struts 2.x Spring 3.x / Spring MVC
Hibernate 3.x DWR Myibatis ?
45
SAE Java 如何用 SAE Java 对框架的支持
Struts 2.x 在 SAE Java上使用需要配置一个Listener ,内容如下 public class InitListener implements ServletContextListener,HttpSessionListener,HttpSessionAttributeListener { public void contextInitialized(ServletContextEvent sce) { OgnlRuntime.setSecurityManager(null); } }
46
SAE Java 如何用 SAE Java 使用技巧 使用JDK1.6 编译war包 一个应用下不要创建过多的版本(抢资源)
避免jar包冲突 (servlet-api.jar xmlsec.jar 删掉) 如果不用避免使用session page session="false" %>) 数据库连接池选择 (c3p0 NO | dbcp Yes)
47
SAE Java 如何用 问题如何反馈 遇到问题先看文档,如果确定代码没有问题可以到Cloudbbs Java 板块中提问,提问时说清楚应用名和问题情况
48
SAE Java 能做什么 对于企业用户来说 高品质的企业服务,维护成本低,迁移成本低,更安全稳定,更高配额 对于创业团队来说
低廉的创业成本,安全稳定的应用环境,海量的云服务 对于普通开发者来说 丰富的服务API,高效易用的开发环境,完善的社区环境
49
SAE Java 能做什么 业务系统? 中信银行业务模块
50
SAE Java 能做什么 微博应用? 微博手机大屏幕 Struts2 + Spring + myibatis 微博API
51
SAE Java 能做什么 网络游戏? 海贼时代 Struts2 + Spring 3 + MyIbatis 手机游戏后端
52
SAE Java 能做什么 电子商务? Legendshop 产品 SpringMVC+ Hibernate3 B2C、C2C
53
SAE Java 能做什么 未来你的应用会在SAE上吗…….
Similar presentations