SSA-一种适合中小型企业的新型服务架构

写在前面

好久好久没写了,最近刚换了工作,花了几天的时候熟悉了项目,接着就是功能的完善,随后就是对新项目的基础架构搭建。

看过Po主博客的都知道,Po主一直致力于推广.Net Core在微服务架构上的实践,包括从去年年底开始也正在写一本关于此类的书(目前还在写的阶段,不便公布)。换新东家的目的也是如此,公司是个集团公司,但楼主负责的项目还不是很大,So,微服务架构可能现阶段还无法实现。

但Po主一心向往微服务架构,所以我在搭建基础架构的时候,想到了一种过度架构方式,也不知道如何称呼,随心所欲称之为:单体服务架构(Single Service Architecture-简称SSA)

什么是单体服务架构

什么是单体服务架构呢?总的来说,架构看上去类似于微服务架构,但它只包含了一个服务,我们的业务逻辑统统放到这一个服务来,简单画个图:

怎么样,简单吧,我们来对比下eShop的架构图:

如何,看出什么了吗?我们的架构去除了Api gateway,去除了EventBus,把各个服务结合在了一起,形成了一个单一的服务,所以我称它为单体服务架构。

为什么需要单体服务架构

可能大家好奇,为什么需要单体服务架构(后称SSA)呢?如果大家了解过微服务架构的话,应该听说过康威定理吧,或者说听说过“微服务架构不是银弹”类似的话吧,概论就是并不是所有企业所有项目都适合微服务架构。但在技术热潮之中,中小型企业都想加入微服务的队列,但如何是好呢?我想SSA可能是他们在完成微服务架构之前最好的选择吧。

Po主在设计新项目之前,也一直困惑,如何为以后的微服务做准备呢?新东家是一家集团公司,业务体系庞大,团队开发语言也是众多,就近一个月的观察来看,运维、开发、维护的成本相当高,未来走向微服务架构是必然的,而且公司找Po主来的目的也是如此。

正如之前所说,目前Po主负责的项目比较小,投入的资源也不是很大,Po在经过前期调研之后,觉得目前并不适合做成微服务架构,经过几天的思量,Po主想到了SSA,去除了很多复杂性,但保留了微服务架构的可扩展,可维护性,也为以后转型做准备。

从SSA的架构图中,你可以清晰的看到,我们有很多的clients,正是因为如此,所以我们需要SSA,如果你的项目只有一个Web,那简单的三层架构就足矣。在SSA中,我们的Inside Api Management为我们的clients提供了所需的Api,类似于Api Gateway,但包含了我们所有的业务逻辑。在SSA中,你可以像微服务架构一样,抛弃数据层,当然我是不建议这样,你可以使用封装好的SqlClient或者Orm框架来协助,结合IUnitOfWork和Repository模式,这样你的数据访问就会变得很简单了。

SSA VS 三层架构

可能你会问,为何不用三层架构呢?而且你的架构跟三层架构很像。

没错,Po主的想法其实就是把三层架构中的业务逻辑层给提取了出来,把业务逻辑封装起来,并提供标准化的Api接口为其他Clients提供业务或数据。

但为何选择SSA而不是三层架构呢?

相信这里几乎所有的开发者都使用过三层架构开发,C端引用我们的逻辑层,逻辑层引用数据层,ok,这是因为我们只需要考虑到一个C端。就拿新闻系统举例,一开始你需要的只是展示新闻内容,一个前端Web足矣,我们叫Web1。但为了维护,我们需要一个后台管理,我们叫Web2,这时候已经以后2个C端了,这时候,你可以新建一个web项目,引用之前的业务层。可随着业务发展,公司需求一个手机H5的站点,我们叫web3,这时候你会再建一个项目,使用一些前端的框架的SPA项目,然后和web2一样,引用之前的业务层。

好了,现在你有3个C端了,我想想,大概1个中级的开发应该能够应付,如果,我说如果,你的这个维护人员离职了,呵呵,我相信没有一定经验的是接手不了项目,至少在短期内无法适应。

我们继续,公司要求需要一个适应微信端的H5,我们叫web4, 一个小程序,我们叫wxapp, 一个安卓:androidApp, 一个苹果:iosApp。

头大了吗?我们现在有4个web,3个app,一共7个前端,请告诉我用你的三层维护起来还好吗?当然,很多时候我们对接app的时候都会使用同一个api接口,算你5个C端吧。5个C端引用同一个业务层,同一个数据层,这时,你的一个逻辑出现了问题,你的一个数据查询出现了问题,Tell me!What would do you do? 我来回答下,我会在业务层修改这个问题,在数据层修改这个问题,然后5个C端发布下,这里还是考虑没有分布式,没有LB的情况哦。Bro, Are u OK?

你应该明白我的意思了吧,如果你使用SSA的话,你其实只需要更新这个Service,我们的发布也只需要更新这个Service,其他的C端并不需要改动。而且当你的Request和Response参数不变的情况,我们统统不需要重新发布C端。

SSA 和三层架构的对比:

/ SSA 三层架构
开发的角度 注重service端,前后端可完全分离 全部都要注重,前后端无法完全分离
部署的角度 多了一个Service Site 少一个Service Site
维护的角度 如果只改了service,只需要一个发布 只要改动到业务逻辑层,我必须全部都要发布
硬件成本的角度 可能多一台服务器或者一个集群,也可以不用多,多一个站点即可 维持不变
人员成本的角度 自己想吧,老板们 运维、dba、dev、老板

SSA的优缺点

SSA 的优点

  • 是一个集经典三层架构和微服务架构一身的新型架构。
  • 适合中小型企业和中小型项目。
  • 在维护上和微服务架构一样便利。
  • 在成本上却和三层架构一般。
  • 不需要EventBus。
  • 不需要熔断,因为你只有一个。
  • 在开发上能够快速迭代。

SSA 的缺点

  • 依赖度太高,所有依赖都在一个Service上
  • IO,因为只有一个,必须考虑到IO,当然也可以集群
  • 无状态,跟微服务架构一样,service必须无状态
  • 可能依赖多个DB
  • 欢迎补充

写在最后

其实还有很多话想说,但很晚了,后面还会继续发文跟大家一起探讨这个架构。

Po主是一个喜欢天马行空的人,但这一次,Po主正在把它进行实践,而且基础框架已经搭建完成,不久之后将会正式上线经受考验。

Po主最近正在开发一个基于.Net Core的服务发现项目,名字就叫“发现者”,可是实在太忙了,只完成了一部分,如果有意参加的,可私信我。

另外Po主需要几位志同道合之士,一同来发展,原本想要一个中级,但现在中级的价码有点高,Po主承受不住啊,欢迎校园刚出来的或者初级,Po主有信心带你们走上.Net Core之路。

招聘启事

  • 会.Net Framework 4.0以上,.Net Core尤佳
  • 会一种ORM
  • 懂得什么叫Web Api
  • 爱好分享,爱好开源,爱好写代码
  • 月薪10K-20K 论能力
  • 地点:上海-吴中路
    我觉得招人启示不用太花俏,大家有相同的理念,投缘即可。不过Po主有一个其他重要的要求,写漂亮的代码,Po是一个见不得Bad Code的人。

****联系方式****



邮箱:[email protected]
QQ:785418
微信:jamesying1
QQ群:376248054
应聘者请注明来源:cnblogs-应聘

原文地址:https://www.cnblogs.com/inday/p/single-service-architecture-first-intro.html

时间: 2024-11-02 12:52:25

SSA-一种适合中小型企业的新型服务架构的相关文章

什么样的移动办公软件CRM适合中小型企业?

移动互联时代为各行各业都带来了颠覆性的改变,更多的企业意识到使用移动办公软件来提高企业效率. 移动客户关系管理软件的发展也势不可挡,移动CRM突破了传统CRM受到时间和空间的限制,使得用户在外也能够完成通常要在办公室里才能完成的客户关系管理任务,随时随地进行与公司业务平台沟通,监督销售流程,有效提高管理效率,推动企业增长.那么,对于中小企业来说什么样的移动办公crm软件更好用呢? 其实,企业可以从功能.操作和价格三个方面来选择移动CRM. 1.产品功能在选择移动CRM系统时,要先了解移动CRM功

解析微服务架构(二):融入微服务的企业集成架构

上一篇文章介绍了微服务架构的起源.定义.通用特性.常见概念误区.微服务架构与SOA架构比较.微服务架构收益以及企业引入微服务架构的策略. 本文将介绍融入微服务的企业集成架构的演进,并描述交互式系统的微服务模式及相关技术决策,然后给出了一个具体的微服务架构业务应用的例子. 交互型系统(System of Engagement)与记录型系统(System of Record) 随着移动互联网的快速发展,企业除了需要提供传统核心IT系统能力之外,还需提供客户与合作伙伴友好型的以交互为重点的创新及交互式

中小型企业商业智能平台的开发和实现

中小型企业商业智能平台的开发和实现(数据仓库.BI系统.真实项目实战)http://www.ibeifeng.com/goods-472.html咨询QQ2110053820课程讲师:鸿鹄 课程分类:数据和数据仓库适合人群:初级课时数量:76课时更新程度:完成用到技术:数据仓库.BI系统.真实项目实战涉及项目:中小型企业商业智能平台 本课程以公共卫生领域高血压的管理为实际应用场景,为高血压管理系统建立数据仓库,进行数据分析.本课程一共分为四个章节,76讲.第一章主要介绍了商业智能系统的发展,从商

中小型企业商业智能平台的开发和实现(数据仓库、BI系统、真实项目实战)

中小型企业商业智能平台的开发和实现(数据仓库.BI系统.真实项目实战)课程分类:数据和数据仓库适合人群:初级课时数量:76课时用到技术:数据仓库.BI系统.真实项目实战涉及项目:中小型企业商业智能平台咨询QQ:1840215592课程内容简介:本课程以公共卫生领域高血压的管理为实际应用场景,为高血压管理系统建立数据仓库,进行数据分析.本课程一共分为四个章节,76讲.第一章主要介绍了商业智能系统的发展,从商业智能的学科范围.演化史.应用案例到自然演化式的体系结构,以及面临的问题,再讲到数据仓库以及

【Google设计冲刺】一种适合于创新小组的协作方式

传统的产品闭环是1.产品策划-2.研发-3.上线-4.等待市场反馈,4个步骤.对于一个创新项目来说,试错成本过高,等待周期过长[注释1].那么,有没有一种适合创新项目的协作方式呢?谷歌风投杰克·纳普发明了一种新型的产品设计方法,从1.产品策划到4.市场反馈,直接形成闭环,即“Google设计冲刺”. 关键点:7个人,5天,1个产品闭环 7个人:创新教练,产品,设计,研发,测试.共计不超过7人不少于5人,以保证方案的数量,以及不同角度的思考. 5天: 周一描述问题,选出集中解决的着力点 周二在纸上

深圳北易信息:中小型企业到底如何做品牌策划呢

首先,品牌是什么,说到"品牌"二字,大家应该都不陌生,有品牌的产品,一般会让人感觉更靠谱安全.品质有保证.包裝有档级.服务也更好.品牌是一个企业或者产品的灵魂,那么品牌策划就是帮企业和产品找到灵魂,提升产品的价值!那么,中小型企业到底如何做品牌策划呢? 那么中小型企业到底如何做品牌策划呢 1.企业核心竞争力 简单的说就是公司的产品.服务能够让用户所喜欢的. 2.产品品牌定位 找出品牌适合的定位是件非常烧脑的事,找出企业品牌的定位,这么做都是为了更加准确的加深用户对品牌的认知. 3.品牌

中小型企业网络构建

中小型企业网络构建一.VLAN概述1.什么是VLAN?-- Virtual LAN(虚拟局域网)是物理设备上连接的不受物理位置限制的用户的一个逻辑组.2.为什么要引入VLAN?-- 交换机分割了冲突域,但是不能分割广播域-- 随着交换机数量的增多,网络中广播增多,降低了网络的效率-- 为了分割广播域,引入了VLAN3.VLAN 的作用-- 广播控制-- 安全性-- 宽带利用-- 延迟(降低)4.VLAN 的种类-- 基于端口划分的静态Vlan-- 基于MAC地址划分的动态Vlan5.VLAN帧格

中小型企业网络构建2

中小型企业网络构建一.默认路由1.什么是默认路由?-- 默认路由是一种特殊的静态路由,对于末梢的主机来说,也是默认网关.-- 默认路由的目标网络为0.0.0.0/0.0.0.0,可匹配任何目标地址.-- 只有当从路由表中找不到任何明确匹配的路由条目时,才会使用默认路由,2.配置默认路由-- 当访问Internet时,一些网络出口只有一个,此时没有必要配置所有的静态路由<Huawei>system-view[Huawei]ip route-static 0.0.0.0 0.0.0.0 吓一跳地址

中小型企业网络构建之STP、MSTP

中小型企业网络构建一.生成树算法(STP)1.广播风暴(1)交换机工作原理-- 根据MAC地址表转发数据帧,如果地址未知,则广播:-- 如果交换机接收到广播帧也会向所有端口发送:(2)当网络中存在物理环路,会产生广播风暴:(3)广播风暴最终会导致网络资源耗尽,交换机死机.2.STP概述(1)STP -- Spanning Tree Protocol(生成树协议)用于在局域网中消除数据链路层环路.-- 逻辑上断开环路,防止广播风暴的产生:-- 当线路故障,阻塞接口被激活,恢复通信,起到备份线路的作