RIA 的强力后盾: REST+ 海量存储
        54chen@QClub
    http://www.54chen.com
             2010.7
学佛越久 离佛越远
   1999 html
   2000 cgi
   2001 asp
   2002 xhtml
   2003 flash
   2004 ajax
   2005 php perl java
   2006~now RIA
   FE html ajax flash flex air silverlight...
   BE cgi perl asp php asp.net java c c++
   WEB server PWS IIS apache to...
" 学了这么久 你有多远了? "
" 你还记得大明湖畔的 POST GET DELETE PUT 吗? "
REST
Roy T. Fielding 在他的博士学位论文中定义了术语
REST

http://www.ics.uci.edu/~fielding/pubs/dissertation/top
.htm
http://www.redsaga.com/o...
"Roy 是谁? "
 "Roy 是 HTTP 和 URIs 的设计者,是许多基本 Web 协
议的主要设计者。 "
什么是 REST
什么是 REST
   网络上的所有事物都被抽象为资源
     ( resource );
   每个资源对应一个唯一的资源标识( resource 
     identifier );
   通过通用的连接器接口( generic ...
什么是 REST
   URI 标识资源
   幂等性保证了你可以简单地再发送一次请求解
     决问题
   POST 方法既不安全也不具有幂等性
   所有资源使用了同样的接口
你可能认为你的应用包含了超出这些操作表达范围的逻
辑。
请允许我花费一些时间来让你相信不存在这样的情况。
REST 例子
http://example.com/customers/1234
http://example.com/orders/2007/10/776654
http://example.com/products/4554
http:/...
   GET /customers/1234 HTTP/1.1
   Host: example.com 
   Accept: text/x­vcard 
违背 REST 约束的原因可归咎于对其好处认知的缺乏
被遗忘的 PUT DELETE
" 这些和我有什么关系呢?你太狂热了 "
" 当然有关系,当 Server 只剩下 CURD 时。。。 "
" 这意味着什么? "
"PHP JAVA...Bye"
未来的项目我们只需要做:


    用 RIA 完成   所有的调用与显示与逻辑
   增加 后端 的 负载能力
☺ 中间部分呢?
☺ 中间部分是一个完全不关心业务逻辑的 REST 框
架
Function REST(uri, request) {
   if(request == get) data = getDataFrom(table);
   if(request == post) data = createDataFro...
使用中的牛 X 项目 :
   OpenResty­­ Yahoo AgentZh Perl 
     http://search.cpan.org/dist/OpenResty/
   Nginx openresty plan ­­ T...
openResty
   最早, js+perl 框架
   提供: js 库( ajax 封装)和 perl 的 REST 服务
     端
现在: ngx_openresty




 ♡ We'd call this whole set of nginx modules
                ngx_openresty
and our work is heavily f...
Nginx conf REST




   nginx.conf 编程
location ~ '^/cat/(d+)' {
    set $id $1;
    set_form_input $name;
    set_quote_sql_str $quoted_name $name;

   postgres...
如何增加后端的负载能力?
CLOUD
"DB 压力太大,分库吧! "
" 听说 key value 的系统不错 "
    " 那还在等什么? Do it!"
☺ 需求:高并发、高可用性、高扩展性、海量存
           储.
前因后果
   Dynamo  Amazon 的高效 Key­Value 存储基础组
     件 , 用于其 S3 服务,是我们要的东西
   Cassandra Facebook 2008 年开源,由 dynamo 团
     队维护...
一起进入分布式的世界
研究的重点: Key-value
我们将 key 分布到从 0 到 2 的 64 次方的圆环上
分区数量 >> 机器数量
数据分区可保障迁移时负载均衡
CAP 原则
   Consistency( 一致性 ) ,数据一致性,简单的说,就是数据复制
      到了 N 台机器,如果有更新,要 N 机器的数据是一起更新
      的。
   Availability( 可用性 ) ,好的响...
数据在网络中往往不止一份
NRW 审视 CAP 原则
在 Dynamo 系统中,第一次提出来了 NRW 的方
法。
N - 复制的次数
R - 读数据的最小节点数
W – 写成功的最小分区数

这三个数用来灵活地调整 Dynamo 系统的可用性与
一致性。
R=1 :最少需要去一个节点读数据即可,读到即返
回,可用性是很高的,但并不能保证数据的一致性

同时 W=1 :可用性更新是最高的一种情况,但这
时完全不能保障数据的一致性,因为在可供复制的
N 个节点里,只需要写成功一次的话就返回了,也
就...
A 增大 C 减小
W=R=N=3: 写保证所有要复制的点都写成功,读的
时候也是都读到,这样子一定读出来的数据是正确
的,但是这中间的性能大打折扣,也就是说,数据
的一致性非常的高,但系统的可用性却非常低了。
C 增大 A 减小
数据分区让整个网络的可扩展性其实是一个固定值
(你分了多少区,实际上网络里扩展节点的上限就
是这个数),通过 NRW 来达到另外两个方向上的
调整。
这真的能实现吗?性能还有保障吗 ?
实现
   Dynamo  Amazon 的高效 Key­Value 存储基础组
     件 , 用于其 S3 服务,是我们要的东西
   Cassandra Facebook 2008 年开源,由 dynamo 团
     队维护。 ...
性能
   提高引擎速度,提高 CLOUD 速度 ...
The future
更强大的海量存储方案
  更多 Rest 框架
 更炫的 RIA 应用
RIA 需要:




硬件加强,网速加快。
 信 X 哥,你懂的。
Thanks
   czhttp@gmail.com
http://www.54chen.com
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
Upcoming SlideShare
Loading in …5
×

Ria的强力后盾:rest+海量存储

1,829 views
1,691 views

Published on

no-sql

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,829
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
47
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Ria的强力后盾:rest+海量存储

  1. 1. RIA 的强力后盾: REST+ 海量存储 54chen@QClub http://www.54chen.com 2010.7
  2. 2. 学佛越久 离佛越远
  3. 3.  1999 html  2000 cgi  2001 asp  2002 xhtml  2003 flash  2004 ajax  2005 php perl java  2006~now RIA
  4. 4.  FE html ajax flash flex air silverlight...  BE cgi perl asp php asp.net java c c++  WEB server PWS IIS apache tomcat resin jboss oc4j  lighttpd nginx
  5. 5. " 学了这么久 你有多远了? " " 你还记得大明湖畔的 POST GET DELETE PUT 吗? "
  6. 6. REST
  7. 7. Roy T. Fielding 在他的博士学位论文中定义了术语 REST http://www.ics.uci.edu/~fielding/pubs/dissertation/top .htm http://www.redsaga.com/opendoc/REST_cn.pdf
  8. 8. "Roy 是谁? " "Roy 是 HTTP 和 URIs 的设计者,是许多基本 Web 协 议的主要设计者。 "
  9. 9. 什么是 REST
  10. 10. 什么是 REST  网络上的所有事物都被抽象为资源 ( resource );  每个资源对应一个唯一的资源标识( resource  identifier );  通过通用的连接器接口( generic connector  interface )对资源进行操作;  对资源的各种操作不会改变资源标识;  所有的操作都是无状态的( stateless )。
  11. 11. 什么是 REST  URI 标识资源  幂等性保证了你可以简单地再发送一次请求解 决问题  POST 方法既不安全也不具有幂等性  所有资源使用了同样的接口
  12. 12. 你可能认为你的应用包含了超出这些操作表达范围的逻 辑。 请允许我花费一些时间来让你相信不存在这样的情况。
  13. 13. REST 例子 http://example.com/customers/1234 http://example.com/orders/2007/10/776654 http://example.com/products/4554 http://example.com/processes/salary­increase­234  
  14. 14.  GET /customers/1234 HTTP/1.1  Host: example.com   Accept: text/x­vcard 
  15. 15. 违背 REST 约束的原因可归咎于对其好处认知的缺乏
  16. 16. 被遗忘的 PUT DELETE
  17. 17. " 这些和我有什么关系呢?你太狂热了 " " 当然有关系,当 Server 只剩下 CURD 时。。。 "
  18. 18. " 这意味着什么? " "PHP JAVA...Bye"
  19. 19. 未来的项目我们只需要做:  用 RIA 完成 所有的调用与显示与逻辑  增加 后端 的 负载能力
  20. 20. ☺ 中间部分呢? ☺ 中间部分是一个完全不关心业务逻辑的 REST 框 架
  21. 21. Function REST(uri, request) { if(request == get) data = getDataFrom(table); if(request == post) data = createDataFrom(table); if(request == put) data = updateDataFrom(table); if(request == delete) data = deleteDataFrom(table); Retrun dataParser(data); //json xml and so on }
  22. 22. 使用中的牛 X 项目 :  OpenResty­­ Yahoo AgentZh Perl  http://search.cpan.org/dist/OpenResty/  Nginx openresty plan ­­ TaoBao C/C++  http://www.pgsqldb.org/mwiki/index.php/Nginx_ openresty_plan  http://fun.yahoo.cn/admin/login.html
  23. 23. openResty  最早, js+perl 框架  提供: js 库( ajax 封装)和 perl 的 REST 服务 端
  24. 24. 现在: ngx_openresty ♡ We'd call this whole set of nginx modules ngx_openresty and our work is heavily funded by Taobao.com.
  25. 25. Nginx conf REST nginx.conf 编程
  26. 26. location ~ '^/cat/(d+)' { set $id $1; set_form_input $name; set_quote_sql_str $quoted_name $name; postgres_query GET "select * from cats where id=$id"; postgres_query DELETE "delete from cats where id=$id"; postgres_query POST "insert into cats (id, name) values($id, $quoted_name)"; postgres_pass my_pg_backend; }
  27. 27. 如何增加后端的负载能力?
  28. 28. CLOUD
  29. 29. "DB 压力太大,分库吧! " " 听说 key value 的系统不错 " " 那还在等什么? Do it!"
  30. 30. ☺ 需求:高并发、高可用性、高扩展性、海量存 储.
  31. 31. 前因后果  Dynamo  Amazon 的高效 Key­Value 存储基础组 件 , 用于其 S3 服务,是我们要的东西  Cassandra Facebook 2008 年开源,由 dynamo 团 队维护。 facebook 、 twitter 、 digg 使用  Voldemort Linkedin  开源。   nuclear renren.com
  32. 32. 一起进入分布式的世界
  33. 33. 研究的重点: Key-value
  34. 34. 我们将 key 分布到从 0 到 2 的 64 次方的圆环上
  35. 35. 分区数量 >> 机器数量 数据分区可保障迁移时负载均衡
  36. 36. CAP 原则  Consistency( 一致性 ) ,数据一致性,简单的说,就是数据复制 到了 N 台机器,如果有更新,要 N 机器的数据是一起更新 的。  Availability( 可用性 ) ,好的响应性能,此项意思主要就是速 度。  Partition tolerance( 分区容错性 ) ,这里是说好的分区方法,体现 具体一点,简单地可理解为是节点的可扩展性。  定理:任何分布式系统只可同时满足二点,没法三者兼顾。  忠告:架构师不要将精力浪费在如何设计能满足三者的完美分 布式系统,而是应该进行取舍。
  37. 37. 数据在网络中往往不止一份
  38. 38. NRW 审视 CAP 原则
  39. 39. 在 Dynamo 系统中,第一次提出来了 NRW 的方 法。 N - 复制的次数 R - 读数据的最小节点数 W – 写成功的最小分区数 这三个数用来灵活地调整 Dynamo 系统的可用性与 一致性。
  40. 40. R=1 :最少需要去一个节点读数据即可,读到即返 回,可用性是很高的,但并不能保证数据的一致性 同时 W=1 :可用性更新是最高的一种情况,但这 时完全不能保障数据的一致性,因为在可供复制的 N 个节点里,只需要写成功一次的话就返回了,也 就意味着,有可能在读的这一次并没有真正读到需 要的数据(一致性相当的不好)。
  41. 41. A 增大 C 减小
  42. 42. W=R=N=3: 写保证所有要复制的点都写成功,读的 时候也是都读到,这样子一定读出来的数据是正确 的,但是这中间的性能大打折扣,也就是说,数据 的一致性非常的高,但系统的可用性却非常低了。
  43. 43. C 增大 A 减小
  44. 44. 数据分区让整个网络的可扩展性其实是一个固定值 (你分了多少区,实际上网络里扩展节点的上限就 是这个数),通过 NRW 来达到另外两个方向上的 调整。
  45. 45. 这真的能实现吗?性能还有保障吗 ?
  46. 46. 实现  Dynamo  Amazon 的高效 Key­Value 存储基础组 件 , 用于其 S3 服务,是我们要的东西  Cassandra Facebook 2008 年开源,由 dynamo 团 队维护。 facebook 、 twitter 、 digg 使用  Voldemort Linkedin  开源。   nuclear renren.com
  47. 47. 性能  提高引擎速度,提高 CLOUD 速度 ...
  48. 48. The future
  49. 49. 更强大的海量存储方案 更多 Rest 框架 更炫的 RIA 应用
  50. 50. RIA 需要: 硬件加强,网速加快。 信 X 哥,你懂的。
  51. 51. Thanks czhttp@gmail.com http://www.54chen.com

×