您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > ,演讲人喻勇,VMware云应用平台及服务团队
©2012VMware,Inc.AllrightsreservedCloudFoundry的弹性设计喻勇(FrankYu)yuf@vmware.com@cloudfoundry内容提要CloudFoundry产品概述CloudFoundry架构剖析CloudFoundry的NATS模块WardenContainer数据及服务的整合Q&A3CONFIDENTIALCloudFoundry产品概述4CONFIDENTIAL云计算的三个层次SaaSSoftwareasaServicePaaSPlatformasaServiceIaaSInfrastructureasaServiceIaaS:硬件的自动化管理,人不机器的解耦合获得效率/牺牲性能PaaS:应用的自动化管理,应用不OS的解耦合获得弹性/牺牲控制5CONFIDENTIALCloudFoundry的元素DataServicesOtherServicesMsgServicesPrivateCloudsPublicCloudsMicroCloudsOSScommunityApache2LicensevFabricPostgresvFabricRabbitMQTMAdditionalpartnersservices…6CONFIDENTIAL演示7CONFIDENTIAL$vmctargetanycloud$vmclogincredentials$vmcpushmy-appbindservices?Yes$vmcupdatemy-app$vmcinstancesmy-app+100vmc工具8CONFIDENTIALJava平台•Grails模仿Rails的Java平台实现•Java_web普通Javaweb程序•Lift基于Scale的web框架•Spring流行的Java框架•PlayRuby平台•Rack最小化的RubyWeb框架•Rails3一站式的RubyWeb框架•Sinatra极简主义的RubyWeb框架Python平台•Django最流行的PythonWeb框架•WsgiPython的CGI其他平台•node.js异步Web框架•Erlang•Php•Microsoft.net•Standalone独立的程序应用平台支持:不断增多9CONFIDENTIAL主流服务•Mongodb最流行的Nosql数据库•MySQL传统开源关系数据库•PostgresqlMySQL的有力竞争者•Redis极快的内存KV数据库•Neo4j图数据库Moreongithub存储•Blob•AmazonS3•Atmos•NFS•LocalDisk•FileSystem远程NFS支持消息•RabbitMQ出色的Erlang队列系统大数据•Hadoop集成•ProjectSerengeti服务平台支持:不断增多10CONFIDENTIALCloudFoundry架构剖析11CONFIDENTIALCloudFoundry架构的逻辑视图-112CONFIDENTIALCloudFoundry架构的逻辑视图-2uaaservicecloudcontrollerdeaappappccdbnatsrouterstagerhealthmanager13CONFIDENTIAL前提•假设失败•为MTTR优化,而丌是MTBF•快速失效,自我修复•横向扩展的组件•分布式状态,没有单点故障•极度简单模式•事件(消息)驱动•异步•非堵塞•独立•消息传递•最终一致性设计•组件的松耦合•更少的类,更多的实例•消息是基础•寻址和组件发现•命令和控制•JSON•数据通过HTTP戒File/Blob传递内核组件的特点•动态发现•无依赖性和启动顺序•通过HTTP/JSON监控•位置独立性CloudFoundry的设计理念14CONFIDENTIAL寻址和发现•丌需要静态IP和DNS查询•Layer4协议命令和控制中央通讯系统Dialtone,fireandforgetProtects*itself*atallcostsIdempotentSemantics消息总线15CONFIDENTIAL处理所有HTTP流量从DEAs获得信息并实时更新路由表维护分布式路由状态将对URL的访问路由至具体的应用在应用实例之间分发流量(均衡负载)路由引擎16CONFIDENTIAL处理所有的状态(state)变化控制用户、应用和服务对应用进行打包和预处理*将服务绑定到应用对外提供RESTAPI接口•可在Github中查看•大管家:CloudController17CONFIDENTIAL负责监控应用和服务的状态如果出现状态异常,通知CloudController没有改变应用或服务状态的权力(只读)Initialvaluewithreal-timedeltaupdatestointendedvs.realDeterminesdrift小护士:HealthManager18CONFIDENTIALDroplet和DropletExecutionAgent负责运行所有的应用监控应用的具体运行参数•CPU,内存,IO,线程,磁盘,等等对于DEA来说,所有应用都是一样的“concept”ofabilityanddesiretorunanapplication•runtimes,options,clusteravoidance,memory/cpuAlertsonanychangeinstateofapplicationsProvidessecure/constrainedOSruntime•Hypervisor,UnixFileandUser,LinuxContainers•SingleorMulti-TenantDEA19CONFIDENTIAL一个可扩展/扩充的层ServiceGateway和ServiceNode绑定到应用可以被共享服务API用来发现、列表和provisionProvision之后,应用对服务的访问是直接的很容易将各类应用和各类服务自动绑定服务20CONFIDENTIAL内核重构的路线图21CONFIDENTIALCloudFoundry的NATS模块22CONFIDENTIAL一个基于事件驱动的轻量级支持消息发布、订阅的系统使用Ruby实现依赖以下模块构建•eventmachine•json_pure•daemons•Thin什么是NATS23CONFIDENTIAL基于Topic发布者以Topic发送消息订阅者订阅特定Topic并收到消息的发布和订阅24CONFIDENTIALDEA启动和处理应用运行•DEA:NATS.publish(„dea.start‟,@hello_message_json)•@hello_message_jsonforUUID,IP,Port,VersionoftheDEA•CloudController需要启动一个Droplet的实例•DEA:NATS.subscribe(„dea.#{UUID}.start‟){|msg|process_dea_start(msg)}•Sendmessagewiththetopicof“dea.#{uuid}.start”tostartthisDEA•对自己UUID的消息主题进行订阅•CloudController:NATS.publish(„dea.#{dea_id}.start‟,json)•DEAgetthemsg,callprocess_dea_start(msg)•msg=droplet_id,instance_index,service,runtimeCloudFoundry下的NATS用例25CONFIDENTIALlib•nats/client.rb#NATSclient•nats/server.rb#NATSserverwrapper•nats/server/server.rb#NATSserver•nats/server/connection.rb#Connectionprocessing•nats/server/sublist.rb#Subscribermanager•nats/server/options.rb•nats/extbin#commandstostartclientandserverspec#testcasesexamplesbenchmarkNATS的源代码26CONFIDENTIAL高速可伸缩的事件驱动I/O框架ReactorPattern(反应堆模式)的Ruby实现•将网络逻辑层从应用逻辑层中抽离。无需操心底层的网络连接和Socket逻辑处理性能优先•引入了一种避免使用线程的编程模型•轻量级的并且支持系统底层网络基础操作•关注高性能的部分都是由C/C++实现•操作系统的最优特性(比如Linux下的epoll)ResearchonEventMachine••幕后英雄:EventMachine27CONFIDENTIALWardenContainer28CONFIDENTIALDEA的重构和增强29CONFIDENTIAL源自于Cgroup非硬件类Hypervisor的一种隔离技术起源于Google•KVM虚拟机是Linux的一个进程,因此Google采用了Cgroups机制来进行资源管理•用户态的虚拟化技术•Cgroup控制KVM虚拟机可以使用的物理资源,包括CPU占用率,CPU核心,内存等Warden是一个孤立的环境,Droplet只可以获得受限的CPU,内存,磁盘访问权限,网络权限目前在GCE,OpenShift等IaaS/PaaS平台中广泛使用满足应用隔离要求的同时,获得高性能和伸缩性不直接使用Cgroup,以确保CloudFoundryDEA对操作系统无依赖性WardenContainer30CONFIDENTIAL数据及服务的整合31CONFIDENTIALServiceGateway&ServiceNodedeveloperappuserroutercloudcontrollerservicegatewayservicenodeapplicationinstancesCloudControllerServiceGatewayServiceNodeNATSREST/JSON/HTTPServiceNode…32CONFIDENTIALServiceBroker33CONFIDENTIALCloudFoundry+VirtualizedDatabaseDataServicesServicesMsgServicesPrivateCloudsPublicCloudsMicroClouds34CONFIDENTIALCloudFoundry+VirtualizedHadoopDataServicesServicesMsgSe
本文标题:,演讲人喻勇,VMware云应用平台及服务团队
链接地址:https://www.777doc.com/doc-1574887 .html