2013萨满大神 02 27 。96 09 10。求大神帮我把这两串数字翻译成罗马数字

1.仅设置两个对象间的继承关系:

問题:__proto__也是内部属性有可能被浏览器禁用


2.批量设置多个子对象的继承关系
只要修改构造函数的Prototype对象即可

时机:定义完构造函数之后,立即修改原型对象!

3.两种类型间的继承: 何时使用:如果发现多个类型之间拥有相同的属性结构和方法时就要抽象出一个父类型


父类型的构慥结构,集中定义相同的属性结构
父类型的原型对象集中定义相同的方法
2.让子类型原型对象继承父类型原型对象
结果:保证子对象可调鼡抽象父类型原型对象中的方法
3.在子类型构造函数中借用父类型构造函数
结果:请父类型构造函数帮助和构造共有的属性结构
问题:直接調用父类型构造函数,其中的this默认指window
解决:call->只要this不是想要的!就可用call随便替换
继承中先有子类型,只有子类型中有公共的属性和方法才抽象父类型

前两天在网上看到 Particular 公司工程师 Weronika 的┅篇「我从星巴克咖啡学到的架构经验」文章非常不错星巴克是传统公司里互联网做得最好的,大家去星巴克买咖啡会发现效率非常高,它怎么把咖啡的效率做得很高

下图是买咖啡的流程,开单子收银,然后有一个人做咖啡交付。

作为程序员提的问题是怎么优化這个流程非常简单就是集群化。慢无非是因为高并发客人太多,所以要做集群化收了单以后,有很多人来做咖啡这是第一步,也昰现在互联网公司的普遍实践

另外,如果把一个咖啡的任务传给下面的人下面这个人还要问一下,顾客买的什么咖啡、要不要加牛奶、要冷的还是热的等这样效率又降低了。所以星巴克一般会在杯子上写下一些记号。

这个就是状态跟着任务走所有做咖啡的人都是無状态的,而他们拿到的每个任务是有状态的这有利于横向扩张、集群化,这和做软件工程是一个道理

仅仅实现了集群化,又会碰到┅些问题因为每个人都在做咖啡,假如只有一台咖啡机一堆人抢一台咖啡机的时候,就会出现一个情况:虽然业务可以横向扩展但昰资源很难横向扩展,比如数据库资源、IO 资源、文件系统等这就出现了瓶颈,计算可以扩展但是其他的资源不能扩展。

面对这种情况大家想出了另一个办法,就是服务化每个做咖啡的人都不是全能的,把他们划分为几个服务有的人做咖啡、有的人做拿铁、有的人莋餐、有的做茶,分成几个服务拿到一个项目就分给不同的服务的人,服务的人每个人的资源是分开的就像微服务化,每个微服务的數据库是分开的大家就可以避免共享某种资源而造成某种资源的拥堵。

同时每个步骤之间还要实现异步化,把咖啡的杯子传给下一个囚放在某一个地方工作人员会自己拿,两个接口我把咖啡放在这,收银的人可以收银前一个人拿了咖啡杯做,最后给交付的人一起茭付接口异步化把业务由集群化拆成服务化,服务之间通过异步接口联络进一步变成分布式的系统,一个可扩、可缩不会依赖于某種特定资源、各个环节之间异步的服务。

分布式的系统很容易出错在星巴克最后拿咖啡的时候,理论上讲他应该看小票但是绝大多数凊况下,做咖啡的人不会管你一般喊一句,有一个美式是谁的拿走就拿走了。当时我也在想会不会出现有人冒领别人的咖啡,或者說有人拿错的情况他为什么不查一下。

后来我想到因为对于星巴克来说,每次确认一下对方看小票,很大程度上会影响他的工作效率一天之内可能 1,000 杯咖啡才会出现一个拿错的情况。如果 1,000 杯咖啡都要确认一下实际上会在很大程度影响他的工作效率。

所以星巴克干脆在接受一定错误率的情况下,不去查小票以此提高工作效率。星巴克本身就允许一定的错误率允许错误是一个特点。而且在整个流程过程中有可能做错咖啡有可能用户不满意等等,会遗留下一些做了一半的咖啡定期地也要清除一下丢掉。

把这三个步骤结合在一起就是一个咖啡店流程的优化过程。

从星巴克制作咖啡过程可以借鉴到一个软件公司的过程从互联网的单服务器程序,一步步拆分实现集群化实现服务化,然后接口异步化做容错等。

这也是本文讨论的重点如何将传统系统变成高并发的系统。

案例/)让你在没有客戶端的情况下开多方的电话会议,共享桌面和 PPT非常适合售前给客户讲 PPT,客户只需要一个网站他打开网站,一是多方语音通话二是可鉯共享桌面。

这个公司只有十几个人开始跟我们合作的时候只有五六个人,已经做了一个很大的系统


(图:视频会议系统 Kuick 点击图片全屏缩放)

这个就是它整个的 IT 架构,有多种客户端:PC、微信、安卓、iOS 等支持全终端,访问是通过 API 服务器前后端通过 API 分离,通过 API 服务器到會议服务器会议服务器是承载了所有会的状态。通过 Session 实现了多人会议状态会存在 Redis 里面。开会过程中需要一些 push通过长链接和各个终端保持。

当会议进入语音阶段通过语音的媒体服务器实现语音,在服务器端进行语音混音有时候还需要通过电话的网关连到电话,支持哆方参与同时,还可以共享桌面共享 PPT,支持文件服务整个架构还是比较复杂的。

他们找我们的时候我们也觉得挺吃惊挺厉害一个團队,四五个人就搞了这么一个复杂的系统

当时他们主要碰到的问题是模块太多,等他们部署测试发现非常麻烦,全部都是点对点连接用的也是不同的技术,大规模扩展肯定会有问题

当时我们一起做了架构的重构,把它服务化不管是数人云的服务发现还是平安的垺务发现,一般都是架构由一个点对点的模式变成了一个“星型”的微服务架构

系统包括网关服务、文件服务、推送服务以及会议服务等等,通过服务发现代理以服务的方式向外报。客户端负载均衡到 API Server 上API Server 判断目前是需要开展一个会议,还是分享一个PPT就往相应的服务器转发。

以前是调用方直接找服务而且是在配置文件中写死。现在调用服务发现代理服务代理发现根据它的 URL 导向文件服务进行下一步處理。


(图:Kuick 的微服务化 点击图片全屏缩放

好处首先是原来复杂的配置文件点对点的配置变成比较简单,只需要记录下一个服务的 URL 就荇了其次,每一个服务都可以横向扩展例如会议服务成为瓶颈的时候就可以扩展会议服务。对外通过负载均衡不管扩展多少节点,對外都是只有一个 URL服务的配置和扩展变得非常容易,叫微服务化做完微服务化就解决了 Kuick 应用上云的最大问题。

以前没有正经的测试环境外网一开就成了生产环境。现在建立了开发、测试、生产三环境因为他们做完了微服务化,相对来说也比较好做不管是用数人云還是类似平台,鼠标一点API 服务一发,几分钟就能发一个系统就出来还有测试环境,因为是 Docker 化的生产环境一定能跑起来

他们就实现了彡个环境,一是他们的集成测试基本的开发环境,用一台机器、一台阿里云所有的应用都跑起来,开发环境的小个集成测试到 QA 测试,用两台机器因为 QA 测试会跑一定的数据,接着是尽量模仿生产环境肯定要多台机器。最后是真正的生产环境有很多台机器。

因为机器数量是不一定而且需要横向扩展管理,这时候可能需要一个云平台把这两个管起来。

这是他们的集成测试就是一台机器。这一台機器跑了非常多这也是容器的好处,跟云平台、Marathon、Mesos 没有什么关系容器的好处是用一台机器跑完整的生产环境,起到很多台机器的作用这些配置可能是手动配的,写死的但是开发过程中问题不大,通过环境变量把这个东西传进去

QA 环境是两台机器,语音服务器用一台機器用起来传统的核心逻辑部分用第二台机器,他们当时用的 Jenkins 适配集成所有部署的脚本都可以一键部署。

现在的集成还没有用 Jenkins是一套更轻量的,Jenkins 是容器时代以前的对象并不是为容器设计的,因为 Jenkins 的构建环境和容器无关只是打包的时候。现在准备环境和构建都在容器里进行这样的话也更加轻量。

最后是一个完整的环境他们的目标,内部测试环境已经是一个用云平台进行管理业务可以灵活地分咘在三台机器上,这和最后的线上部署差不多可以选择特定的机器进行扩展。

今天通过数人云两个真实的用户案例分享怎么容器化、垺务化、上云,建立开发、测试、生产环境的经验对于容器云这方面问题使用问题欢迎在文章留言交流。

欢迎关注数人云的公众号了解更多应用如何上容器云方面精彩文章。

版权声明:本文为博主原创文章未经博主允许不得转载。 /aa/article/details/

我要回帖

更多关于 2013萨满大神 的文章

 

随机推荐