集装箱式架构设计的十个学习步骤

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

By高焕堂集装箱式架构设计的十个学习步骤简介•在需求、数据和软件愈来愈碎片化的趋势下,集装箱(如DockerContainer)包装了微服务(Micro-Service)成为主流。这些微服务在运行时间(Run-time)经常需要动态组合成为各式各样的App来支撑企业多变的业务流程。简介•这种集装箱式架构设计,随着近年来Docker集装箱技术的流行,可说红透半天边,而且势如破竹、蔚为风潮,正在强力改变终端与云平台的整体设计理念和方法。简介•本课程分为两个阶段,第一阶段以个人的学习路径为主轴,依循十个学习步骤,循序渐进建立扎实的根基。第二阶段,则依据企业软件开发流程里的先后环节来作教学。阐述各环节的思想、模式、技术和实践要点。并以Android+Docker的端云一体化架构设计为例,阐述企业逻辑分析、插件和集装箱设计、实际开发愈部属方法等。基于软硬整合观点By高焕堂碎片化潮流下的架构新思维--变化、碎片与集装箱Part-1高焕堂的著作基于软硬整合观点1.1碎片(Fragment)来自何处呢?碎片来自变化(Change)碎片或(表现为软件的)插件(Plug-in)的背后都是变(化)沙滩沙滩沙滩接口接口接口接口接口接口接口集装箱接口内部(变化)集装箱接口(序)内部(变化)接口(序)沙滩沙滩引擎沙滩轮胎(碎片)引擎沙滩EngineTire(碎片)Interface沙滩EIT沙滩EIT沙滩EIT沙滩环境变因(道路)沙滩环境变因(道路)系统碎片(轮胎)沙滩环境变因(道路)系统碎片(轮胎)沙滩其他变因?其他碎片?基于软硬整合观点1.2软件碎片(插件)来自何处呢?插件(软件碎片)来自变化(Change)碎片或插件(Plug-in)的背后都是变(化)以SurfaceView+Camera(摄像头)为例•软件SurfaceView代表手机屏幕•软件Camera代表摄像头以SurfaceView+Camera(摄像头)为例•Camera摄像头取得视像,然后将视像传递到SurfaceView屏幕上呈现出来。(视像)(视像)面对环境变化分离出碎片!碎片-xSurfaceViewSurfaceView碎片-x碎片-ySurfaceView碎片-x碎片-y碎片-zSurfaceView碎片-x碎片-yApp-zSurfaceViewApp-yApp-z碎片-xSurfaceViewApp-xApp-yApp-zSurfaceViewApp-zEIT变化(01):屏幕显示3D绘图EIT变化(01):屏幕显示3D绘图变化(02):屏幕显示2D绘图EIT变化(02):屏幕显示2D绘图变化(03):屏幕显示MP4视频EIT1T2变化(03):屏幕显示MP4视频沙滩其他其他碎片?•将医院加护(重症)病房的仪器联结到护士站的AndroidTV,让患者的病情及时传送到TV上。•同时,TV也主动再将讯息及时传送到医生的手机或Pad上,让医生能进行实时性的决策,提供更高质量的服务。基于软硬整合观点1.3软件碎片的组合•试想,在智慧城市里,有两个系统模块:智能家庭和交通车联网。•两者之间通过网络通信机制来互通。智慧家庭交通车联网通信协议智慧家庭交通车联网通信协议通信协议智慧家庭交通车联网先搞定通信协议•传统方法:两个团队先约定,商讨一个双方都接受的通信协议。•然后,双方就依据这项通信协议,分别开发各自的模块。智慧家庭交通车联网通信协议•不良结果:各模块都依赖于(Dependon)通信协议,导致两个模块也紧密相依了。•三个东西紧密相连在一起的。一旦通信协议改变了,两边的模块都必须改变。•产生的牵一发而动全身的涟漪效应。智慧家庭交通车联网交通车联网通信协议父类子类智慧家庭交通车联网通信协议智慧家庭EIT智慧家庭交通车联网通信协议父类子类智慧家庭交通车联网通信协议智慧家庭交通车联网ET通信协议I交通车联网通信协议父类子类父类子类智慧家庭交通车联网通信协议父类子类父类子类智慧家庭交通车联网通信协议E&ITE&IT智慧家庭碎片的组合碎片的组合碎片的组合E&IT碎片的组合E&ITTE&IE&I碎片的组合TTTE&IE&I碎片的组合TTT基于软硬整合观点1.4软件的序中有乱(集装箱特性)ITxITyIT1T2I(序)TI(序)TI(序)TI(序)T•外形简单•内容多变•无限组合例如:原子•化学元素由原子构成道尔顿例如:原子(摘自百度文库)•不同元素原子的性质各不相同道尔顿(摘自百度文库)道尔顿•不同元素化合时,原子以简单整数比结合。道尔顿道尔顿水分子道尔顿Q&A基于软硬整合观点By高焕堂Part-2Docker集装箱的趋势、技术与架构高焕堂的著作基于软硬整合观点2.1、集装箱(Container)的经济效益Docker集装箱•自从2014年以来,Docker的集装箱(container)技术,可说是红透半天边,而且势如破竹、蔚为风潮,正在强力改变云(cloud)服务的世界。•这跟半世纪前,海上船运业的集装箱风潮,对整个产业的革命性改变,其力道来源和产生经济效益,可说具有异曲同工之妙。•为了配合集装箱化运输时代的来临,海运事业的整体运作型态也产生了重大的转变,无论在海上运送、码头作业以及陆运转接上,都有革命性的改变。•陆上拖车运输业应时而兴,扮演极为重要的角色,以集装箱拖车配合集装箱船运输,具有简化包装、防止窃盗、加速货物搬运及便利关务检验等优点,使集装箱运输作业更加灵活。•集装箱带来的商业利益,其直接受惠是运输业者,并不是货物制造者。•所以集装箱内部的包装业,如纸盒制造业、打包工人等;拖车汽车厂、拖车行、拖车司机;还有造船厂、海运公司、码头工人等都会迅速蓬勃发展起来。•将之对应到Docker风潮,可知道Docker集装箱的效益在于:让所有云服务都有一致的操作(operation)界面,包括部署、管理等方式。•Docker集装箱带来的商业利益,直接受惠是软件管理者或称维运者(operator),例如软件测试工具业者、测试人员等。•在这新世代里,除了拿Docker集装箱来打包微服务(micro-service)来满足需求碎片之外。我们还要以广大的视野、创新的思维,将碎片组合出各式各样、气象万千的商业服务。•就像飞机设计师一样,把一群各自不会飞的模块(如轮胎、引擎、机翼、油箱等),以创新模式将它们组合起来,竟然整体就<能飞>上天空了。•在许多革命性转折里,经常出现集装箱的身影;它就像幸运草一般,总是带来许多幸福和财运。•现在Docker风起云涌,再现集装箱身影,如果开放视野、大力支持它,持续发挥它的潜能和力量,则幸运草就会出现在我们身旁了。基于软硬整合观点2.2、国王的皮鞋与Docker集装箱•古代有一位国王在它的国境里视察,因为路面崎岖不平,还有很多碎石头,刺得国王的脚又痛又麻。(摘自百度文库)•回到了王宫后,他下了一道命令,要将国内所有的道路都铺上一层牛皮。让他自己和全国的人走路不再受刺痛之苦。•然而,即便杀尽国内所有的牛,也凑不到足够的牛皮来铺路,而且花费昂贵。•这时,一个仆人向国王建言:可以用牛皮将脚包起来,大王的脚就不会忍受痛苦了。•国王听道而顿悟了,便收回命令,采纳了建议,于是,皮鞋就这样发明了出来了。(摘自百度文库)•从上述皮鞋故事的比喻,可知道传统的虚拟化(virtualization)技术就相当于在各道路(实体机器)上铺一层牛皮(VM,虚拟机),然后让国王的脚(App)在牛皮(VM)上走路(执行)。•传统上云平台采取虚拟化手段来满足用户个别的资源需求分配,以及确保其可用性和隔离性。•然而无论是KVM还是Xen等GuestOS都很浪费资源又难于管理,都不如Docker集装箱(皮鞋)来的更加灵活、快速和节省资源。传统铺牛皮(虚拟层)Docker皮鞋(集装箱)•Docker的焦点在于国王的脚而不是像传统虚拟化思维的焦点在于让国王脚疼的道路。•为什么Docker集装箱能提升App的执行效能呢?因为Docker属于OS层级的虚拟化。•在传统hypervisor虚拟化技术哩,VM透过一个中介层,间接执行于HostOS上。•而Docker集装箱(也是一个小VM)则执行于Host-OS的用户空间,直接执行于HostOS上。所以效率提高了。•Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到主流的Linux机器上。•这些分布式应用程序具可携特性,由各个不同但可互通的Docker容器所组成,具备动态的生命周期,而且不论是在笔电或是云端上皆可执行。基于软硬整合观点2.3、Docker集装箱的基础--LXC用户空间Linux内核用户空间Linux内核进程进程用户空间Linux内核进程LXCnamespace•LXC在目前的进程管理框架上增加资源的管理和隔离机制。•LXC包集成这些linux内核机制提供一个用户空间容器对象,即是针对某一应用提供资源隔离和控制的轻量虚拟系统。•Docker对container的使用基本是建立唉LXC基础之上的,然而LXC存在的问题是难以移动-难以通过标准化的模板制作、重建、复制和移动container。•LXC仰赖namespace来实现隔离性。让每个容器都有自己的命名空间,确保不同容器之间不会相互影响,让每个容器成为拥有自己进程和网络空间的虚拟环境,都成为一个独立运行的单位。•此外,LXC藉由内核的cgroup来对各个容器(的进程)使用的系统资源做严格的限制。•例如可建立一个cgroup来限制某个(容器)进程对CPU的占用率不能超过50%。而Docker则在LXC基础上,加上Docker境像管理方式,就成为Docker集装箱了。LXCLinux内核namespaceDocker集装箱Linux内核namespaceAppImageBins/LibsImageDocker集装箱Linux内核namespace•Docker借鉴了虚拟机(VM)的模式,让用户像管理VM一样的管理他们的集装箱镜像。基于软硬整合观点2.4、Namespace与Cgroup的角色•简而言之,LXC基于namespace的隔离机制和cgroup的资源控制功能,来管理容器。隔离性•LXC运行于一个用户空间进程里,在既有的进程管理架构上,增添了资源管理和隔离机制。•所以LXC是针对某一App提供资源隔离和控制的轻量型虚拟系统。LXC仰赖namespace来实现隔离性。隔离性•让每个容器都有自己的命名空间,比如pid/net/ipc/mnt/uts等命名空间,以及不同的userid和groupid。•有了namespace从进程、网络、IPC、档系统、UTS和用户角度进行隔离,我们就能e确保在不同容器之间不会相互影响,每个容器都成为一个独立运行的单位。隔离性•从容器里而观之,它是一个完整的Linux的世界。在整个平台而观之,容器运行于一个普通的用户空间进程,namespace创造了这种映射和隔离效果,云平台承载着一个个容器,就如同造物者创造了许多世外桃源一般。资源控制•LXC仰赖cgroup来限制各个进程对系统资源的使用能力。通常会创建多个cgroup,形成一个树状结构(hierarchy)。•然后subsystem会关联连接到这个树状结构上。一个subsystem代表着一项资源,例如CPU、Memory或I/O等。/cpu_mem_cg/cg1/cg2/cg3CgroupHierarchymemoryCPUSubsystems•cgroup组织形式是树状结构的,包含一个父cgroup和三个子cgroup,其关联到两个subsystem(即CPU和memory)。•这subsystem是经由cgroup来与task(典型的就是进程)连结,以便实现对task的资源管理与控制。•一个task可加入到树状结构上的一个cgroup,由此cgroup来限制该task的资源使用。•一个cgroup可以连结到多个task。而一个task也可连结到多个cgroup。•例如,针对一个容器进程,先

1 / 473
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功