微服务是一种架构思想。将原有的单个业务系统拆分为多个可以独立开发,设计,运行和运维的“小系统”。这些“小系统”之间通过服务完成交互和集成。每个”小系统”除了能处理本身的业务功能外,同时也将自身的能力朝外部发布为服务。
SOA
SOA(面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)的紧耦合系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来后,供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。
微服务是 SOA 的升级版,做到更细的粒度,处理了更多的问题。
例如图1中将所有的功能打包在一个WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑,缺点也非常明显,部署不灵活以及扩展性不够,但我们如果按照图2的为方式,按照业务而不是技术来划分组织,内部各个服务通过REST方式进行沟通,那么可以使平台使部署、管理和服务功能交付变得更加简单。
如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。
微服务与
一般提到微服务都离不开Docker与DevOps,理解微服务架构是核心,Docker是工具,是手段。
Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Nodejs或Spring Boot的技术跑在自己的进程中。可能在几十台计算机中运行成千上万个Docker容器,每个容器都运行着服务的一个实例。随时可以增加某个服务的实例数,或者某个实例崩溃后,在其他的计算机上再创建该服务的新的实例。
DevOps即开发测试和部署运维的一体化。当我们的单体应用拆分为多个“小系统”后,虽然整体架构可以松耦合和可扩展,但是如果拆分的组件越多,这些组件之间本身的部署运维就越复杂。DevOps够实现开发设计到部署运维的一体化。
微服务优势
1 通过分解巨大单体式应用为多个服务方法解决了复杂性问题。 在功能不变的情况下,应用被分解为多个可管理的分支或服务。微服务架构模式给采用单体式编码方式很难实现的功能提供了模块化的解决方案,由此,单个服务很容易开发、理解和维护。
2 这种架构使得每个服务都可以有专门开发团队来开发。 开发者可以自由选择开发技术,提供API服务,实现敏捷开发。
3 微服务架构模式是每个微服务独立的部署。 开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。
4 微服务架构模式使得每个服务独立扩展。 你可以根据每个服务的规模来部署满足需求的规模。甚至于,你可以使用更适合于服务资源需求的硬件。
四驾马车
最后再谈谈咱们SuperMap家族中的四驾马车(iServer、iExpress、iPortal、iCloudManager),这些产品也是借鉴了微服务设计思想,例如iCloudManager,它可以管理成千上万的Docker容器,将每个Docker完全做到进程级别的隔离,资源占用率又很小,满足微服务架构开发与测试以及自动化部署运维。
什么是微服务?
微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务的概念源于2014年3月Martin Fowler所写的文章“Microservices” martinfowlercom/articles/mi…
单体架构(Monolithic Architecture )
企业级的应用一般都会面临各种各样的业务需求,而常见的方式是把大量功能堆积到同一个单体架构中去。比如:常见的ERP、CRM等系统都以单体架构的方式运行,同时由于提供了大量的业务功能,随着功能的升级,整个研发、发布、定位问题,扩展,升级这样一个“怪物”系统会变得越来越困难。
这种架构模式就是把应用整体打包部署,具体的样式依赖本身应用采用的语言,如果采用java语言,自然你会打包成war包,部署在Tomcat或者Jetty这样的应用服务器上,如果你使用spring boot还可以打包成jar包部署。其他还有Rails和Nodejs应用以目录层次的形式打包
上图:单体架构
大部分企业通过SOA来解决上述问题,SOA的思路是把应用中相近的功能聚合到一起,以服务的形式提供出去。因此基于SOA架构的应用可以理解为一批服务的组合。SOA带来的问题是,引入了大量的服务、消息格式定义和规范。
多数情况下,SOA的服务直接相互独立,但是部署在同一个运行环境中(类似于一个Tomcat实例下,运行了很多web应用)。和单体架构类似,随着业务功能的增多SOA的服务会变得越来越复杂,本质上看没有因为使用SOA而变的更好。图1,是一个包含多种服务的在线零售网站,所有的服务部署在一个运行环境中,是一个典型的单体架构。
单体架构的应用一般有以下特点:
微服务架构(Microservices Architecture)
微服务架构的核心思想是,一个应用是由多个小的、相互独立的、微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖。不同服务通过一些轻量级交互机制来通信,例如 RPC、>
REST(REpresentationStateTransfer)描述了一个架构样式的网络系统,比如web应用程序。它首次出现在2000年RoyFielding的博士论文中,他是>
以上就是关于五分钟学GIS _ 微服务架构全部的内容,包括:五分钟学GIS _ 微服务架构、如何快速搭建一个微服务架构、如何使用Spring Boot/Spring Cloud 实现微服务应用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)