应用架构

微服务系列之-微服务概念

别等时光非礼了梦想. 提交于 2020-01-15 05:08:29
一.为什么需要微服务。 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难; 随着移动互联网的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线; 许多企业在SOA投资中得到的回报有限,SOA可以通过标准化服务接口实现能力的重用,但对于快速变化的需求,受到整体式应用的限制,有时候显得力不从心; 随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式。 二.云计算及大量开源轻量级技术不停涌现并日渐成熟 互联网/内联网/网络更加成熟; 轻量级运行时技术的出现(node.js, WAS Liberty等); 新的方法与工具(Agile, DevOps, TDD, CI, XP, Puppet, Chef…); 新的轻量级协议(RESTful API接口, 轻量级消息机制); 简化的基础设施:操作系统虚拟化(hypervisors), 容器化(e.g. Docker), 基础设施即服务 (IaaS), 工作负载虚拟化(Kubernetes,Spark…)等; 服务平台化(PaaS): 云服务平台上具有自动缩放、工作负载管理、SLA 管理、消息机制、缓存、构建管理等各种按需使用的服务;

实时计算在贝壳的实践

南楼画角 提交于 2020-01-14 15:38:46
本文由贝壳找房的资深工程师刘力云将带来Apache Flink技术在贝壳找房业务中的应用,通过企业开发的实时计算平台案例的分享帮助用户了解Apache Flink的技术特性与应用场景。 **摘要:**Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。本文由贝壳找房的资深工程师刘力云将带来Apache Flink技术在贝壳找房业务中的应用,通过企业开发的实时计算平台案例的分享帮助用户了解Apache Flink的技术特性与应用场景。 业务规模及演进 下图为贝壳找房的业务场景示意图。最上层为贝壳找房公司最为主体的四大业务:二手房交易、新房交易、租赁业务及装修业务。四大业务运营将产生图示中间部分的四大数据即楼盘字典、交易数据、用户行为日志与后端服务日志。图示最下部分代表公司实时数据采集、实时数据计算的业务模块,本文中的案例将重点介绍数据实时计算部分的设计、实现及应用内容。 发展历程 在2018年初,随着公司埋点治理规范的推进,我们建设了DP实时数据总线,统一承接各种埋点数据流的标准化处理,并对外提供清洗后的实时数据。随着维护的实时任务增加,面临着实时数据流稳定性以及任务管理方面的挑战,于是贝壳大数据部着手研发了Hermes实时计算平台,提供统一的实时任务管理平台。 在2018年10月,我们推出了SQL V1编辑器来方便用户开发实时计算任务

1.一个WEB应用的开发流程

你说的曾经没有我的故事 提交于 2020-01-14 13:42:49
先说项目开发过程中团队人员的分工协作。    一、人员安排   毕业至今的大部分项目都是独立完成,虽然也有和其他同事协作的时候,但自认为对团队协作的了解和认知都还有所欠缺。很清楚团队协作的重要性,但尚未有很好的机会在相对成熟的团队中锻炼实践。   先抛开 软件开发 团队中人员的具体安排不讲,单纯的看软件开发工作的分工。在上面设想的开发架构中,宏观上可将一个项目划分为前端、程序、 数据库 三个模块。由此可推导出团队中需要的成员:美工、程序员和项目经理。   认为理想的软件开发团队由四个专业技能过硬的成员组成:一个美工,熟悉UI的设计并具备将效果图转换成前端页面的能力,也就是得同时精通PhotoShop、HTML、CSS、jQuery等前端知识;一个程序员,熟练掌握代码的编写重构;一个项目经理,具备 需求分析 的能力、数据库设计维护的能力、架构设计的能力、程序编写的能力、前端样式脚本编写的能力,最重要的是对业务流程有精准的把握;一个部门经理,和前三位不一样,部门经理只具备领导能力即可,他是兼职,不需要把全部时间投入到团队中。   大部分中小型项目可以由这样的四人团队完成,可如果项目较大,已经大大超出了四个人可完成的工作量,可以再加一个前端开发人员。也就是说两个前端开发者,一个负责UI设计,做出完整的效果图,这个人的设计功底应该比较强;一个负责将效果图转换成页面,并完成样式、脚本等的编写

Vue.js 和 MVVM 小细节

梦想与她 提交于 2020-01-14 00:17:44
Vue.js 和 MVVM 小细节 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的 数据双向绑定 。 Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷。 1、为什么会出现 MVVM 呢? 我接触MVVM 是在2015年,可以说2015年是MVVM 最火热的一年,而在这之前,我所知道的就是MVC, MVC 大约是在5年前,也就是2011年的时候接触的,那时候刚学编程语言,学的Java,而Java 中经典的 SSH 框架就用来构建一个标准的MVC 框架。说实话,MVC 用了这么多年,但始终没有很深刻的理解,只停留在用的层面, 一直到接触 Vue.js 之后,研究了MVVM 架构思想,然后再回头看 MVC ,才有一种豁然开朗的感觉~ MVC 即 Model-View-Controller 的缩写,就是 模型-视图-控制器 , 也就是说一个标准的Web

1.Dubbo之原理基础

柔情痞子 提交于 2020-01-13 19:36:46
官方文档地址 中文版 学习方便 http://dubbo.apache.org/zh-cn/docs/user/quick-start.html gitHub https://github.com/apache/incubator-dubbo 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 ​ 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。 需求 ​ 在大规模服务化之前

微服务监测的五大原则

﹥>﹥吖頭↗ 提交于 2020-01-13 19:23:16
一、背景 容器和微服务的出现并得到大量应用,从根本上改变了应用系统的组成和运行方式。而随着开发人员开始利用编排系统来管理和部署容器,规则进一步发生了变化。以往主机上的一个简单应用,现在已成为一个复杂的、动态编排的、多容器的体系架构,这同时也对应用的监测提出了全新的挑战。 Sysdig,是专注于系统故障排查和监控工具的公司,其产品Sysdig Cloud是定位于容器系统故障排查和监控的平台。在今年召开的JFrog SwampUp用户大会上,Sysdig公司提出监测容器及构建在其上的微服务的五大关键原则。这些原则充分考虑了容器和微服务与传统架构在运维方式上的差异。 本文即是根据Sysdig公司在本次大会上的演讲视频整理而成的。 二、微服务是什么 要正确地监测微服务,首先要正确地理解什么是微服务。 演讲首先引用了Martin Fowler关于微服务的定义(Martin Fowler是国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发的创始人之一,现为ThoughtWorks公司的首席科学家。很多人了解微服务架构都是从Martin Fowler的这篇文章开始的),即“微服务架构”描述了一种将软件应用程序设计为一组可独立部署的服务的特定方式。其中,“围绕业务能力的特性”,也就是说,微服务的划分不是依据程序的大小,而是以业务能力的拆分为基准的。这种业务细分后的服务,以及自动化部署

电商平台架构2

强颜欢笑 提交于 2020-01-10 20:51:43
1.电商案例原因 分布式大型网站,目前看主要有几类: 1.大型门户,比如网易,新浪等; 2.SNS网站,比如校内,开心网等; 3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。 电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。 因此,我们采用电商网站作为案例,进行分析。 2 电商网站需求 客户需求: 建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款; (1)用户购买时可以在线与客服沟通; (2)用户收到商品后,可以给商品打分,评价; (3)目前有成熟的进销存系统;需要与网站对接; (4)希望能够支持3~5年,业务的发展; (5)预计3~5年用户数达到1000万; (6)定期举办双11,双12,三八男人节等活动; (7)其他的功能参考京东或国美在线等网站。 客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。 需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述

互联网三高架构之高并发、高性能、高可用的理解

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-10 06:48:14
互联网三高架构:高并发、高性能、高可用,简称三高(3H) 互联网应用系统开发肯定经常会看到高并发和高性能这两个词,可谓是耳熟能详,而具体的含义和关系真的如你所想的,真正的理解了吗? 先来看一个例子: 一个蓄水池,是1m*1m*1m=1立方米大小,有一个出水口,出水口每秒钟流出0.1立方米,那么这个蓄水池的并发量是1立方米,出水速度是0.1立方米/秒。 如果增加一个出水口,都是每秒钟流出0.1立方米,那么这个蓄水池的并发量没变,但是出水速度变成了0.2立方米/秒。 同理,增大了出水口,蓄水池的出水速度也变快了。 上面我们很容易知道,并发量是一个容量的概念,性能就是出水速度,而且有下面这些结果。 增大蓄水池的长宽高,可以增加并发能力。 出水口如果扩大了出口大小,则可以提高出水的速度,也就是性能提高了。 增加出水口的数量,则是增加了并行处理的能力,同样可以提高性能。 那么对照我们计算机中,我们的系统中,是怎么样的结果呢? 增加服务器的内存大小,可以增加并发量。因为内存增加了,就可以开更多的进程,更多的线程,也可以扩大任务队列的大小。 提高cpu的主频速度,优化程序,可以提高性能。cpu更快了,程序优化的更好了,处理单个任务的时间也就更短了。 增加多核甚至分布式服务器数量,也可以提高性能,同时提高并发量。 如果只是性能提高了,并发量是否也能提高呢? 如果我们静态的理解并发量

技术沙龙 | 云时代下的架构演进—企业云及云原生技术落地实践

断了今生、忘了曾经 提交于 2020-01-08 16:38:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 云改变了IT行业的形态和市场格局,催生了应用的发展。随着云计算技术的不断演进,作为一名优秀的架构师,必须深入了解云计算平台的特点及架构设计,包括构建数据库、大规模落地微服务、Service Mesh和全链路监控等才能紧跟时代的步伐。 12月21日,京东云开发者社区和英特尔联合举办的「 云时代下的架构演进—企业上云及云原生技术落地实践 」沙龙在北京顺利召开,在本次活动中来自京东技术专家从顶层视角解读京东集团的云化之路、京东物流的上云之路、探寻数据库上云的探索之路、京东云的落地服务网格和DevOps系统,五个模块同现场的百位技术从业者进行了分享与交流。 1 京东的集团上云之路 京东云客户成功部架构师 汤源 对于京东云来说,必定要走一条与其他云厂商不同的道路,而京东云认为,集团上云就是京东云与其他云厂商的重要差异点。因此,集团上云在京东内部就是一个战略方向,京东云客户成功部专家级架构师汤源解释道,京东的战略就是构建以零售为基础的技术与服务。这个技术服务是TO B的技术与业务能力,需要去变现,它必须要有一个商业平台,因此,京东集团做公有云,在战略层面是坚定不移的。京东内部也是非常全面的去认识集团上云,但京东云的集团上云,并不是说要转变京东云的业务方向,也不是狭义上集团把自有业务迁移上云(Cloud Migration)

微服务架构~BFF和网关

你。 提交于 2020-01-07 10:06:05
介绍 BFF(Backend for Frontend)和网关Gateway是微服务架构中的两个重要概念,这两个概念相对比较新,有些开发人员甚至是架构师都不甚理解。 本文用假想的公司案例+图示的方式,解释BFF和网关是什么,它们是怎么演化出来的。希望对架构师设计和落地微服务架构有所启发。 服务化架构V1 我们先把时间推回到大致2011年左右。假设有一家有一定业务体量的电商公司A,在这个时间点它已经完成单块应用的解构拆分,内部SOA服务化已经初步完成。这个时候它的无线应用还没有起步,前端用户体验层主要是传统的服务端Web应用,总体服务化架构V1如下图所示。 服务化架构V2 时间转眼来到2012年初,国内的无线应用开始起风,A公司也紧跟市场趋势,研发自己的无线原生App。为了能尽快上线,公司的架构师提出如下V2架构,让App直接调用内部的服务: 这个架构有如下问题: 无线App和内部微服务强耦合,任何一边的变化都可能对另外一边造成影响。 无线App需要知道内部服务的地址等细节。 无线App端需要开发大量的聚合裁剪和适配逻辑: 聚合 :某一个功能需要同时调用几个后端API进行组合,比如首页需要显示分类和产品细节,就要同时调用分类API和产品API,不能一次调用完成。 裁剪 :后端服务返回的Payload一般比较通用,App需要根据设备类型进行裁剪,比如手机屏幕小