zoukankan      html  css  js  c++  java
  • SOA和微服务(应用和数据的垂直拆分及水平拆分)

    引出问题

    互联网发展迅猛,互联网系统也由原来的单机服务逐步的演化为分布式服务,同样,服务架构也由原来的单体架构逐步演化为如今的分布式架构,由此衍生出许多架构类型。今天就谈谈微服务架构和传统的SOA架构到底有什么区别。

    近年来微服务火遍中小型企业,似乎看起来SOA已经成为将要过时的技术,事实是真的这样子吗?

    重要概念

    当单体架构满足不了日益增长的客户需求时,就要将数据库和应用程序等拆分开,也就是将一个应用程序部署到多台服务器上。通常服务和数据的拆分,分成垂直拆分和水平拆分。

    同步分层的架构和异步分层架构只差了一个消息队列(MQ),异步操作虽然可以增强用户的体验,但是其弱一致性会带来许多数据不一致的问题(这个问题在后续博文中会做出解释和解决方案,关注我哟~)。

    垂直拆分

    对业务的不同进行分类,不同的业务划分到不同的应用和数据库中。这种拆分往往是根据系统的改造,将原来的功能模块按照更加细粒度的拆分成多个弱耦合的服务。

    水平拆分

    数据库层面的水平拆分,就是将一个数据表中的数据按照某种规则分化到不同的数据库中,也就是分库分表。

    应用层面的水平拆分,最经典的就是将整个应用分层。数据库访问层和业务逻辑层拆分、网关层和业务逻辑层拆分等等。

    同步分层架构

    异步分层架构

    SOA是什么?

    (铺垫了这么多,终于到正题了)

    面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。(这是百度的解释)

    SOA其实是按照业务进行垂直方向的拆分的,每个服务其实还是单机,对ESB依赖严重。

    微服务是什么?

    微服务的终极目的就是为了项目的快速迭代和持续交付。

    微服务架构既进行垂直拆分,又进行了水平拆分。

    数据库拆分

    数据库拆分也分为垂直拆分和水平拆分。

    垂直拆分比较容易理解,就是按照业务进行拆分;水平拆分就比较难了,其实一般的能不用水平拆分就不用水平拆分。

    这里我推荐一个专门用来做分布式的数据库,TiDB。(在后续博文中会介绍它的使用和应用场景,关注我哟~)

     

    分布式AKF拆分原则:

    https://www.cnblogs.com/-wenli/p/13584796.html

    个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。
  • 相关阅读:
    疫情控制
    2020 CSP-J 多校赛 Day 2 T2 题解
    三校联考-水题狂欢信心赛
    QBXT 提高组储备营 2020.夏 游记
    【题解】(我出的题)XM捡面筋
    【题解】P4025 [PA2014]Bohater
    【题解】1644:【例 4】佳佳的 Fibonacci
    【题解】CF1165F2 Microtransactions (hard version)
    P2261 [CQOI2007]余数求和
    OVO——扶咕咕的20道CF
  • 原文地址:https://www.cnblogs.com/wq-9/p/15183892.html
Copyright © 2011-2022 走看看