微服务开发攻略之浅析微服务架构

最近这些年,微服务非常火,那你有没想过微服务的动机是什么?其实,最重要的动机就是业务变化太快了。特别是移动互联网出现以后,各种各样的业务:共享单车、支付宝、微信支付等等,业务经历着飞速的变革与创新,所以就要求底层的应用技术能够支撑得上业务的快速变化。
我们看一下应用架构的变迁,其实也是从另一个角度来印证上文说的“快”。

第一代是单体架构,当然它有很多,例如紧耦合、封闭架构等各种各样的问题。第二代是SOA架构,可能大型企业级的应用里面会比较多,提供了很多种支持,实际上我们看到SOA架构的时候,它已经强调松耦合了。那么他强调这一点是为了什么?其中一点就是因为快(当然不是仅仅为了快)。到现在第三代微服务架构,它实际上是变得更加灵活了。在业务变化非常快速的背景之下,微服务架构是一个非常好的解决方案,微服务的核心——敏捷、灵活、精准弹性。微服务架构出现的最大的意义是不断地提高交付效率,缩短交付周期。
微服务最有名的人——Martin Fowler,在2015年提出了微服务的概念(实际上2009年Netflix就已经开始实践微服务了,但是当时没有微服务一词)。2015年Martin Fowler明确的提出了微服务的概念并对它进行了一些比较清晰的定义,最主要的就是:小、独、轻、松。就是说微服务要小,模块边界要更清晰,支持独立部署独立演进,每个微服务都应该可以独立部署,独立演进,独立升级的。另外允许技术多样性,就是在微服务构成的一个整体的应用系统里面,每一块的业务要用你最适合的技术去实现,而不是都统一用一种语言去实现,这也是微服务非常重要的一个特点。
所有事情都有两面性,那微服务也不是只有好处没有坏处的,它也会带来问题。其实很明显,例如,从运维人员的角度来看,原来只需要运维一个应用;把它拆开后,就需要运维多个应用,复杂性和难度一定是增加的。从开发人员的角度来看,原来写程序的时候,单体应用,方法之间的调用就可以解决很多业务的处理了;变成分布式以后,就要远程调用,不能用简单的进程内的调用了。用远程调用它就会出现一些问题,比如会变慢、可靠性比进程内部的差等等。那开发人员就要去处理这些问题,要去为这些问题做准备。还有一点也是非常重要的,就是数据一致性的问题。原来在单体应用里面,可以用数据库保持数据的一致性(或者说用数据库的事务去保证数据的一致性);但是到分布式系统以后,突然发现这种方式不行了。因为在微服务架构里面提倡的是数据分开,就是说每一个微服务都会有自己独立的数据库。Martin Fowler也讲了允许技术的多样性,到数据这一层也要用最合适的数据库技术去构建单独的微服务。原来保证数据一致性都是关系型数据库,直接用事物就好了。但是到了微服务就不一样,可能有些微服务用的是关系型数据库,但有些微服务用的是非关系型的数据库。所以在这样的前提下,去保证整个系统的数据一致性,也是带来了很大的挑战的。
以上大致介绍了什么是微服务架构,它有什么样的特点,又有什么样的优势和挑战。想了解更多微服务相关内容吗,华为云学院(https://edu.huaweicloud.com/
已上线多门微服务相关课程,从基础知识入门,到开发第一个微服务,到微服务的上线、治理,带你一站式攻克微服务,敏捷开发微服务应用,快来报名学习吧。

原文地址:http://blog.51cto.com/14042634/2314053

时间: 2024-08-01 14:03:08

微服务开发攻略之浅析微服务架构的相关文章

Hi Developer,微服务开发攻略请查收

微服务开发攻略微服务正成为最热门的系统架构之一.作为一名开发者,是否已经了解微服务?微服务系统?微服务应用模式?如何提升微服务开发能力......本文带你一起学习微服务.1 什么是微服务微服务是架构层的一个概念,通过分解(业务单元),将项目拆解出n个单元,互相没有强依赖关系(解耦),自我准备需要的依赖条件,进而达到可以独立运行,不再受环境与地点上的限制.2 微服务的由来微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个

图像识别DM8127开发攻略——UBOOT的移植说明

图像识别DM8127开发攻略--UBOOT的移植说明 根据前几篇文章的介绍,想必大家对DM8127软件架构有了全局的认识,下面我们从开发的角度进行裁剪移植最基本的BOOT软件包,嵌入式开发人员拿到一个新的板子,就是要如何让板子能跑得起自己编译和移植的程序,这才有价值,否则直接拿别人的BIN文件直接烧写到板子上没啥意思. 一.DM8127 UBOOT编译说明DM8127 的UBOOT的版本是u-boot-2010.06, UBOOT代码 和 以前的DM6446-DM368-DM3730平台稍微不同

图像识别DM8127开发攻略——KERNEL的移植说明

图像识别DM8127开发攻略--KERNEL的移植说明 接上一篇<图像识别DM8127开发攻略--UBOOT的移植说明>的步伐,DM8127开发攻略最后一篇文章是有关Kernel的裁剪移植.基于APPRO RDK3.8.0的基础上,我们对/ti_tools/ipnc_psp_arago/kernel进行裁剪和移植,这个kernel是linux-2.6.37版本:一.第一步还是做裁剪工作,删除多余的文件夹和文件,方便程序在每个阶段备份保存.1.先在kernel/fs/hostf/Makefile

图像识别DM8127开发攻略——序

DAVINCI(ARM+DSP)开发攻略已经整整两年多没写东西了,自从写完DAVINCI DM3730的开发攻略,就基本没什么精力去写,一直在忙DM3730平台客户定制的产品设计和大规模量产的任务. 2015年-2016年-2017上半年爆炸性的出货,公司只好全力去支持大客户,保证产品的质量.还有得了一个可爱的小宝宝,里里外外的事情重重压过来,不得不去处理,结果博客和公司网站基本处在停止更新状态,毕竟这年头大环境是实业误国,投机"兴邦",在这种情况下科技公司全力赚点伙食费不容易,所以博

DAVINCI DM3730开发攻略——应用程序例程分析

过完2015年春节回来了,利用上班前的几天时间,先把这篇文章写完,本来是先写<DAVINCI DM3730开发攻略--linux-2.6.32移植>,但是那篇文章涉及内核的东西太多,不太好写,而本人已经很长时间没写新文章了,先发布这篇文章.后来想了想,从应用程序使用的角度分析,再一步一步深入内核里边去,也许更好. 前面几篇DM3730开发攻略讲到:一个DAVINCI  DM3730板子程序由xload,uboot, linux-2.6.32或者(linux-2.6.37),文件系统rootfs

&lt;2014 05 10&gt; Android平台开发攻略

1.标准SDK开发: IDE: Eclipse Netbeans Language: Java 2.标准NDK+SDK开发: IDE: Eclipse Language: Java(JNI) C/C++ 3.Tranditional linux开发 IDE: c4droid,   command line.vim,emacs Language: C/C++ ------------------------------------------------------------ In a mini

独孤九篇之运维进阶:文件共享服务全攻略完结篇

一.了解一下 1.NFS NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样. 好处: 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用.用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上

广州小程序开发攻略

微信小程序如今已经是如火如荼,目前面对个人.企业都已经开放,主体类型为企业.政府.媒体.其他组织或个人的开发者,均可申请注册小程序.下面我们来认识一下微信小程序. 微信小程序有如下特点: 生于微信,自带微信流量 微信目前用户数已经突破10亿,小程序在微信生态中目前已经有近百个入口,常见的分享给朋友.微信群.附近小程序.公众号文章内.服务消息内等等,只要使用微信,几乎都能见到小程序的身影. 小程序自带的附近的小程序功能,帮助商家被五公里范围内的微信用户搜索到,解决当下商家广告无处可打的尴尬.店铺根

小程序云开发攻略,解决最棘手的问题

背景 最近小程序非常的火,应公司业务发展要求,开发维护了几款小程序,公司开发的小程序都是由后端提供的接口,开发繁琐而复杂,直到小程序出现了云开发,仔细研读了文档之后,欣喜不已,于是我着手开发了本人的第一款小程序 小程序云开发教程地址 点我查看>> 分析 云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥. 优势 无需自建服务器,数据库,