文档章节

微服务架构实践之服务器架构演变探究

12叔
 12叔
发布于 2017/05/13 16:05
字数 1260
阅读 125
收藏 8

###引子

输入图片说明

在服务器开发过程中我们的不同过程中应该使用怎样的架构 分布式架构和单一应用的架构又有何区别和优势 为了更好的学习和使用我们的微服务架构我们从架构的演变讲起

单一应用架构

输入图片说明

我们以一个电商网站为例 它可能包含多个模块 订单 支付 商品等,在单一应用的架构 我们的开发人员所有模块都集中在同一个项目中所有代码放在同一个容器中运行 连接的也是同一个的数据库

这样的好处是在前期代码比较好复用 数据库事物处理简单,部署也比较容易 缺点也显而易见开发上讲不容易模块化,对集群的支持性不好 伴随着并发量的提升带来的可扩展性会越来越低 并且随着代码量的不断增加维护成本越来越高了部署和升级和前期成反比

不过在项目的初期需要快速建立原型的时候,这样的架构对于开发来说更加高效, 并且架构并非一蹴而就,可以随着我们项目的变化而演变的。

** 垂直应用架构**

输入图片说明

为了解决单一应用架构的问题 我们使用垂直应用的架构,把各个业务进行拆分 如商品 支付等都使用单独的模块进行开发 这样的好处是可以模块化开发,解决单一应用后期业务复杂难以维护的问题 并且可以分开部署从而解决单一应用的一部分扩展性问题

但是垂直应用的缺点也显而易见,相同功能的代码难以复用 特别是异构系统,这样对系统的可维护性和升级又带来了新的难题

面向服务的架构

输入图片说明

为了解决垂直应用架构相同功能难以复用的问题 我们使用分布式应用的架构,把相同的逻辑进行提取,形成服务,对外使用 也就是我们SOA(面向服务的架构)的由来 这样的方式提升了系统的可维护性,降低了升级的难度,提升了系统的稳定性,也使分工更加明确 对模块化开发更加友好 在应对高并发的情况下,通过增加特定的服务灵活更针对性的解决 对于后期的扩展和维护也提供了相对的保证

###** 微服务**

最后引出了我们现阶段最流行的微服务架构 很明确的一点是微服务是SOA的一种延续 都是面向服务的一种方式

从部署方式上,微服务通常应用Docker技术,通过自动化方式独立部署, 每个服务运行在自己的进程中,通过轻量的通讯机制进行联系

其中最大的区别是传统的SOA一般以ESB为核心,大量的WS标准实现 而微服务是去ESB、去中心化、分布式的,微服务的服务拆分力度更细,甚至小到无法拆分 通过服务的组合,重用来实现业务,而SOA没有这么极致的要求,只需要接口契约的规范化,内部实现可以更粗粒度,微服务更多为了可扩充性、负载均衡以及提高吞吐量而去分解应用,从而实现真正意义上的组件化开发,每个服务运行在自己的进程中,通过轻量的通讯机制进行通信

最后微服务解决了问题的同时也会带来新的问题 比如服务之间无法保证强一致性,当然没人愿意使用分布式事物,近而追求最终一致性 多了一层服务层,架构实际上是更复杂了,需要引入一系列机制对服务进行管理 又引出了服务之间的调用,服务的注册与发现 服务化之后,随着规模的扩大,一定要考虑服务治理,否则服务之间的依赖关系会乱成麻 服务的粒度细了以后部署起来又麻烦了起来,所以又引入了Docker之类的devops工具

至于如何实施微服务,面向服务架构依赖的 服务之间的调用,服务的发现,服务的治理,服务的部署 甚至服务监控 服务容错 分布式事物 实时计算 等又该如何实施,我们将在下面的一系列文章中逐一分析

© 著作权归作者所有

12叔

12叔

粉丝 149
博文 29
码字总数 56327
作品 3
杭州
程序员
私信 提问
互联网架构|云+社区技术沙龙 [第22期]

技术不断演变的过程中,技术架构对于企业来说起到什么作用?本期沙龙将邀请腾讯的技术专家分享关于技术架构、落地实践案例、无服务器云函数架构、海量存储系统架构等话题,从技术角度看架构发...

举个栗子OSC
04/26
0
0
这些年,系统架构都经历了怎样的演变?

当今技术的发展日新月异,系统架构也跟随技术的发展不断升级和改进,从传统的单一架构演变为如今的微服务分布式架构,我们来看看技术架构的演变过程。 NO.1 初期网站架构 网站建设初期,访问...

Java高级架构师
2018/07/26
0
0
SegmentFault D-Day 西安站

SegmentFault D-Day 介绍 2014 年 SegmentFault D-Day,5 个月,9 场技术沙龙,覆盖北京、杭州、南京上千的开发者,我们受到了越来越多的开发者的参与和肯定。这些肯定也让我们不敢减弱技术传...

文洁洁洁
2015/06/16
339
4
SegmentFault D-Day 西安站

SegmentFault D-Day 介绍 2014 年 SegmentFault D-Day,5 个月,9 场技术沙龙,覆盖北京、杭州、南京上千的开发者,我们受到了越来越多的开发者的参与和肯定。这些肯定也让我们不敢减弱技术传...

文洁洁洁
2015/06/16
0
0
数人云Meetup|Building Microservice NO.1 深圳站

发展变革,容器化的兴起,带来应用开发部署的变革,也带来应用设计架构和运维部署变化; 敏捷为王,造就Cloud Native技术及文化大势已成,云原生不仅是技术,在技术之上更是一种团队技术文化...

数人云
2018/01/04
8
0

没有更多内容

加载失败,请刷新页面

加载更多

Redox OS 发布 0.5 版

Redox OS 是一个几乎完全以 Rust 语言编写的通用操作系统及周围生态(例如文件系统、显示服务器及 Rust 版本的 libc)。其遵循微内核架构,在一定程度上兼容于 POSIX。 该项目于日前发布了 ...

linuxCool
54分钟前
2
0
更新上传git/gitee项目时出现密码配置错误(incorrect username or password)的解决办法

1.输入【git remote add origin git地址】 命令时出现incorrect username or password的错误,这是因为之前弹出输入账户和密码时输错了,而且会一直默认错误的账户和密码,因此需要把之前输入...

west_coast
今天
0
0
Jenkins基础入门-1-Jenkins简单介绍和环境安装

如果在做自动化测试的朋友,应该熟悉Jenkins,或者至少使用过。如果一个人没有使用过Jenkins或者hudson,hudson是Jenkins的前身,他还说自己做过自动化测试,只能说,他只不过是在做半自动化...

shzwork
今天
0
0
linux上解压版安装jdk,tomcat

需要的安装包 1.vmware12 2.centos7版本 3.安装完成后需要xshell来连接远程虚拟机,虚拟机保证要联网,网络畅通。 4.xftp用来向linux传输文件用,一般来说xshell和xftp配套使用 5.对应的压缩...

architect刘源源
今天
29
0
使用 spring 的 IOC 解决程序耦合

工厂模式解耦 在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时...

骚年锦时
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部