什么是SOA(什么是soasoa具有哪些特征)

SOA和微服务是什么关系?

说实话,我真的不明白SOA和微服务的本质区别。归根结底,两者都是一种向外界提供接口的架构设计方式。我觉得微服务其实就是随着互联网的发展和复杂平台、服务的出现,导致SOA架构向更细粒度、更普及的方向发展的所谓微服务。基于这种说法,我认为SOA和微服务的区别在于以下几个方面:

微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合;

为什么要用微服务?

技术为商业而生,建筑也为商业而出现。当然,SOA和微服务也是因为业务的发展而出现的。SOA和微服务框架的出现与业务的发展和平台的成长密切相关。这里借用dubbo的网站架构开发图和描述:

单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的 Web框架(MVC) 是关键。分布式服务架构当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。流动计算架构当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

随着平台业务的发展,全在一个环境下就能满足业务需求(在Java中,可能只需要一两个war包就能解决);开发需要拆分多个应用,用MVC分离前后端,加快开发效率;随着越来越多服务的发展,一些核心或共享服务不得不被拆分。其实在这个阶段,如果把服务拆分的足够细,独立运行,我觉得可以理解为一个微服务。

理想的微服务架构

没有什么是完美的,网站架构也是如此。只有“比以前更好”的架构或者“目前最好的实现方式”,没有理想的架构。那么理想的微服务架构应该是什么样的呢?我认为它至少应该具备以下特征:

能支持当前业务需求,当然这只是最最基本的条件;每个微服务都要去中心化,不存在单点故障;每个微服务都要实现高可用、高负载,不会因为一个服务不可用而影响了整套业务流;每个微服务都要高度通用化,即多种终端都可调用,不分语言和平台;服务部署或升级简单,不会消耗大量人力并且部署过程不易出现人为错误;微服务具有快速注册与自动发现功能(例如dubbo框架)

当然,这些只是能想到的几点。实际环境中使用的微服务框架可能会根据实际业务需求优化更多的个性化功能,也可能有些功能是不必要的。还是那句话,架构是为业务服务的,能够快速便捷的满足业务需求的架构才是好的架构,好的微服务架构。

欢迎做了一到五年Java工程师的朋友加入Java程序员开发:721575865

在群里提供免费的Java架构学习资料(有高可用、高并发、高性能和分布式、Jvm性能调优、Spring源代码、MyBatis、Netty、Redis、Kafka、MySQL、Zookeeper、Tomcat、Docker、Dubbo、Nginx等知识点的架构资料)。合理利用自己的每一分每一秒来学习和提升自己。不要再用它们了。趁年轻,努力拼搏,以后给自己一个交代!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/246625.html

发表回复

登录后才能评论