首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏京东技术

    单体分层应用架构剖析

    Tech 导读 分层单体架构风格是分层思想在单体架构中的应用,其关注于技术视角的职责分层。同时,基于不同层变化速率的不同,在一定程度上控制变化在系统内的传播,有助于提升系统的稳定性。 1.1 四层单体架构风格 经典的四层单体分层架构如下图所示,应用在逻辑上划分为展现层、业务层、持久层及数据存储层,每层的职责如下: 展现层:负责给最终用户展现信息,并接受用户的输入触发系统的业务逻辑 将组件化思维应用单体分层架构,引申出模块化单体架构风格。应用架构按照问题域进行模块化组织,而非基于技术关注点进行拆分。组件内部遵循内聚性原则,其内包含了实现组件能力所需要的各个元素及交互关系。 同时,组织良好的模块化单体应用架构也是进行微服务拆分的重要保证。如果你无法在单体架构中进行优雅的模块化组织,又何谈合理的微服务拆分呢? 将组件化思维应用单体分层架构,模块化单体技术视角的分层拉回至业务域视角的模块化,一定程度上降低业务与工程实现间的隔离。

    81420编辑于 2023-09-11
  • 来自专栏Linyb极客之路

    单体架构中应用Hystrix

    默认情况下,如前面的示例所示配置Hystrix时,Hystrix将创建另外一个线程池,该池与应用程序服务器中的默认池分开。

    1.3K10发布于 2018-12-21
  • 来自专栏武培轩的专栏

    单体应用走向服务化

    之前讲解了什么是微服务:微服务的核心在于服务治理,微服务架构是将复杂臃肿的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率。 拆分单体应用有哪些标准呢? 什么时候进行服务化拆分? 比如做社交 App,初期为了快速上线,验证可行性,可以只开发首页信息流、评论等基本功能。 下面几个问题,是从单体应用迁移到微服务架构时必将面临也必须解决的。 服务如何定义:对于单体应用来说,不同功能模块之前相互交互时,通常是以类库的方式来提供各个模块的功能。 服务如何发布和订阅:单体应用由于部署在同一个 WAR 包里,接口之间的调用属于进程内的调用。 总结 无论是纵向拆分还是横向拆分,都是将单体应用庞杂的功能进行拆分,抽离成单独的服务部署。

    48720发布于 2019-10-12
  • 来自专栏武培轩的专栏

    单体应用走向服务化

    之前讲解了什么是微服务:微服务的核心在于服务治理,微服务架构是将复杂臃肿的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率。 拆分单体应用有哪些标准呢? 什么时候进行服务化拆分? 比如做社交 App,初期为了快速上线,验证可行性,可以只开发首页信息流、评论等基本功能。 下面几个问题,是从单体应用迁移到微服务架构时必将面临也必须解决的。 服务如何定义:对于单体应用来说,不同功能模块之前相互交互时,通常是以类库的方式来提供各个模块的功能。 服务如何发布和订阅:单体应用由于部署在同一个 WAR 包里,接口之间的调用属于进程内的调用。 微服务架构示例 [微服务架构示例] 总结 无论是纵向拆分还是横向拆分,都是将单体应用庞杂的功能进行拆分,抽离成单独的服务部署。

    73910发布于 2019-10-10
  • 来自专栏Java架构师历程

    重构单体应用为微服务

    他很早就参与了设计与实现,他的博文主要涵盖了微服务应用设计与开发方面的内容,包括了如何从单体应用迁移至微服务。博文提供了关于微服务问题的全面概述,非常受欢迎。 NGINX Plus 可以很好地应用于 API 网关,提供了负载均衡和静态文件缓存等功能。 微服务架构中的进程间通信 当把一个单体应用分解成几部分(微服务),他们就需要相互通信。 微服务事件驱动数据管理 每个微服务维护着自己特有的数据展示与存储,而不是共享一个统一、跨越一个(或两个)单体应用的数据存储。虽然这能给予您很大的灵活性,但也可能导致变得复杂。 Chris 讲解了微服务部署的主要模式,以便您可以为您的应用作出合理的选择, 重构单体应用为微服务 在理想世界里,我们不会缺少时间与金钱,因此可以将核心软件转化为最新最好的技术、工具和方法。 然而您可能会发现自己正在将一个单体应用转化为微服务,而且进展非常缓慢……。Chris 在本章将为您讲解明智的做法。

    72130发布于 2018-09-26
  • 来自专栏用户1337634的专栏

    单体应用模拟微服务 - Maven

    但是使用单体应用模式,又担心项目增长后,迁移到微服务的代价太大。 面对这种情况,我们团队在开发过程中逐步摸索了一个简单的办法,在单体应用中使用maven实现对微服务的模拟,既可以在前期实现快速开发,又大大降低了微服务化的成本。 aics-data-api为服务接口,aics-data-provider为服务实现者,aics-server为服务调用方 效果:只有服务API对Consumer可见,其实现对Consumer不可见,但却能为单体应用中的调用方提供服务

    64130发布于 2019-03-27
  • 来自专栏大数据知识

    单体应用与微应用典型架构比对

    随着云化时代的到来,软件服务架构也从传统的单体架构向微服务架构转变,微服务架构发展的如火如荼,那么单体架构和微服务架构区别在哪里呢? 单体应用典型架构 在典型单体应用架构中,我们会横向部署多个应用,用来支撑系统的吞吐量。为了实现负载均衡,使用反向代理软件(Nginx)把请求均匀分发到每个Tomcat中。 单体应用的典型架构如下 1.png 微应用典型架构 为了解决单个Nginx的瓶颈,我们引入F5,F5是工作在网络第四层的负载均衡解决方案,可对TCP请求或更高层级的网络协议进行转发,实现对多个Nginx 同时我们业务进行拆分,拆分成应用和服务。大数据培训应用负责满足用户的使用需求,每个应用分别负责具体的业务场景,相互之间可以做到独立升级迭代。 微应用的典型架构如下: 2.png

    58130编辑于 2021-12-27
  • 来自专栏IT技术精选文摘

    单体应用重构为微服务

    微服务重构概述 将单体应用程序转换为微服务的过程是应用程序现代化的一种形式。这是几十年来开发人员一直在做的事情。因此,在将应用程序重构为微服务时,有一些方法可以重用。 一个策略是不推荐“大面积”重写。 您应该逐渐构建一个由微服务组成的新应用程序,并与您的单体应用程序一起运行。随着时间的推移,单体应用程序实现的功能量会缩小,直到它完全消失或者成为另一个微服务器。 服务可以使用三种策略来访问单体数据: 调用由单体应用提供的远程API 直接访问该单体应用的数据库 维护自己的数据副本,与单体应用的数据库同步 胶合代码有时被称为反腐层 它阻止单体应用变得更加难以管理。 该服务可以独立于单体式开发,部署和扩展。 您将体验到您创建的每个新服务的微服务架构的优势。 然而,这种方法没有解决单体的问题。 要解决这些问题,您需要分解整体。 策略2 - 拆分前端和后端 缩小单体应用程序的策略是从业务逻辑和数据访问层拆分表示层。

    1.4K80发布于 2018-01-30
  • 来自专栏张善友的专栏

    单体应用 适合采用 dapr 构建吗?

    下午细想了一下,觉得这个和微服务没有关系,如果我的应用是个单体架构(将所有功能都部署在一个web容器中运行的系统就叫做巨石型应用),但是它却用到了分布式中间件,比如缓存、消息队列,Actor模型呢,这些分布式中间件的标准化 横切关注点需求是无论单体还是微服务都需要处理的问题。 总之,Dapr 解决了分布式中间件的依赖问题,上层所有的语言和下层所有的基础设施,通过一层层统一的接口进行抽象。

    74120发布于 2021-10-19
  • 来自专栏肉眼品世界

    8场5胜,微服务VS单体架构

    要部署单体应用,简单的复制操作就足够了。要启动或停止单体应用,通常只需一个简单的命令即可。还有与单体应用相比,事务还增加了运行微服务架构的复杂性。跨服务的调用,很难保证数据是同步的。 这一次,单体应用又胜利了。 对比4:资源使用 一般来说,微服务会比单体应用使用更多的资源。即使在Docker中运行时,基准测试发现,虽然服务连接数量下降了8%,但是容器编排还将消耗资源,日志聚合和监视也将消耗资源。 如果单体应用的一个实例使用8GB,则两个实例使用16GB,依此类推。 因为,单体应用不仅更易于管理,同时如果软件产品每秒仅有几个访问量,那么单体应用可能就足够了。

    1.5K20发布于 2020-11-17
  • 来自专栏DevOps时代的专栏

    测试微服务 VS 测试单体应用

    使用微服务比起使用单体应用程序结构有许多优点。 但是微服务并不像单体应用程序一样已经有确定的开发模式。 许多问题尚未解决,我们也还没有看到完善的“微服务方式”的实施标准的出现。 测试也不例外。 在一个典型的应用中,一个(微)服务有一系列的依赖关系,可能是其他的(微)服务。 在单元测试中一样,第一个想法是模拟对象测试(mocking)。 但是,有什么好方法对微服务模拟对象测试? 测试层级 对于原生微服务应用1,我们定义了多个层次的测试。 单元 这就是我们熟悉的单元测试,没有什么不同,并且取决于编程语言。 组件 测试服务,无需外部依赖,使用数据 fixture。

    1.1K80发布于 2018-02-02
  • 来自专栏JAVA开发专栏

    单体应用、SOA架构、微服务架构的对比

    ​目 录 前言: 单体架构 SOA架构 微服务架构 前言: 随着近年来云技术的发展,越来越多的用户选择使用云技术来代替传统的IT基础设施。 通常来说,架构的发展历程分为以下几种:单体架构、SOA面向服务架构、微服务架构 单体架构 很久以前,计算机发展的早期,创建的绝大部分的应用都属于单体应用,通常一个应用分为数据库连接、业务逻辑处理、展示逻辑等放到了一起 可以更好的管理代码,大大提升了后期的维护效率,但是此时还是单体应用,部署也是按照一个整体运行。 这使得构件在各种各样的系统中的服务可以统一的方式进行交互 与单体架构不同的是SOA是粗粒度的拆分,具体的标准参考康威定理,应用单体应用做了垂直拆分之后,就会变成一些相对独立的应用。 独立进程 轻量级通信协议 可独立部署 多语言不同存储技术 微服务可以说是一个庞大且复杂的概念集合,它既是一种架构模式,也是实现这种架构模式所使用的技术方案集合 需要解决的问题: 分布式的使用难点:原本在单体应用

    1.5K41编辑于 2022-11-14
  • 来自专栏Java后端技术栈cwnait

    天天吹微服务,单体应用有啥不好?

    这个话题有点大,我会分几篇文章和大家慢慢说,今天就先来说说传统的单体应用有哪些弊端,正是因为单体应用存在的弊端,使得我们不得不考虑发展微服务。 这是我们站在今天的角度来说的,曾经的单体应用也是先进生产力的代表。 但是,随着互联网的发展,我们对一个系统的要求越来越高,单体应用已经很难适应当前的开发,因此在回答我们为什么要使用微服务这个问题之前,我们有必要来聊一聊单体应用目前都面临哪些问题。 但是你要说想搞一个淘宝网站,或者你想搞一个用友 U8 系统,那你恐怕就得先慢慢设计系统架构了。单体应用,由于就是一个项目,所有的功能都是写在一个项目中,不可避免的出现项目过度复杂的情况。 曾经的优势 当然,事物都是有两面性的,单体应用也有它自己的优势,例如: 开发简单,一个 IDE 就可以快速构建出一个单体应用 测试简单 部署简单,Tomcat 安装好之后,应用扔上去就行了 集群化部署也很容易

    54830发布于 2019-07-30
  • 来自专栏devops_k8s

    单体应用到微服务开发旅程

    这家公司有一个著名的开源项目:github.com/Kong/kong 让我们一起来学习下这家CTO是如何从单体应用架构过渡到微服务架构的,Kong又做了哪些事,K8S在其中又做了什么角色,什么是状态机 自从2007-2008年移动端问世起,我们需要一种方式去和我们单体应用进行交互。 如果想要扩展这个单体应用,那么我们只能部署更多这个单体应用的实例 (为了缓解某个扩展服务的压力,其他服务被动进行不必要的水平扩展,增加了复杂性); image.png 如果这个单体应用是个电商网站, 因为这是一个规模很大的单体服务架构,我们需要很多团队一起去维护它 在这个案例中,有三个不同的团队在对这个单体应用进行维护,为其创建新功能并将它们投入到生产环境中; image.png 现在相信你们现在也知道了单体架构和微服务架构的一些利弊 ; 并希望它通过某种方式能够成为serivce mesh中的一部分 所以我们希望数据平台不仅仅是在kubernetes 中,还要运行在我们单体应用的环境中; 我们希望这种模式(上述的单体应用)也可以成为

    48841发布于 2021-07-02
  • 来自专栏玩转JavaEE

    天天吹微服务,单体应用有啥不好?

    这个话题有点大,我会分几篇文章和大家慢慢说,今天就先来说说传统的单体应用有哪些弊端,正是因为单体应用存在的弊端,使得我们不得不考虑发展微服务。 这是我们站在今天的角度来说的,曾经的单体应用也是先进生产力的代表。 但是,随着互联网的发展,我们对一个系统的要求越来越高,单体应用已经很难适应当前的开发,因此在回答我们为什么要使用微服务这个问题之前,我们有必要来聊一聊单体应用目前都面临哪些问题。 但是你要说想搞一个淘宝网站,或者你想搞一个用友 U8 系统,那你恐怕就得先慢慢设计系统架构了。单体应用,由于就是一个项目,所有的功能都是写在一个项目中,不可避免的出现项目过度复杂的情况。 曾经的优势 当然,事物都是有两面性的,单体应用也有它自己的优势,例如: 开发简单,一个 IDE 就可以快速构建出一个单体应用 测试简单 部署简单,Tomcat 安装好之后,应用扔上去就行了 集群化部署也很容易

    37110发布于 2019-07-31
  • 来自专栏网络收集

    单体模式

    三、单体模式 单体模式是设计模式中最常用的一种。单体模式就是希望可以在使用方法创建对象的时候,我们无论创建多少次对象都指向同一个 1、普通创建对象方式 <! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-<em>8</em>"> <meta http-equiv="X-UA-Compatible 我们需要他们创建出来的返回的数据是已经被创建出来的对象数据,而不是再去创建出来的新的对象 </script> </head> <body> </body> </html> 2、<em>单体</em>模式创建对象 DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-<em>8</em>"> <meta http-equiv="X-UA-Compatible

    28320编辑于 2022-06-09
  • 来自专栏JavaWeb

    任务调度-单体应用定时任务解决方案

    应用场景: 单体应用(并发少、就公司内部使用)、业务比较简单、单一、稳定,传统行业首选,项目初期。 2. 主要方式: Spring XML配置方式,timer。 总结: 从XML到注解,在从注解到异步处理,配置使用方式越来越简单,性能越来越好;但同时暴露了这三种方式缺点: 扩展性不高(每次业务迭代都需要修改应用代码) 性能也受单机资源的限制、 代码侵入性太高 方式单一

    60120发布于 2019-06-19
  • 来自专栏盘古开发框架

    如何基于「盘古开发框架」开发垂直分层单体应用

    本文介绍如何基于盘古开发框架开发一个单体分层架构的应用。文中所述仅为搭建一个单体应用的基本框架,增加配置中心、数据持久化、缓存等能力请参考开发指南的相关章节。 虽然盘古框架的标准姿势是分布式微服务开发,但决定技术开发架构选型的因素很多,单体应用依旧有很多应用场景。因此,盘古框架不会绑定用户到一个固定的开发范式和架构上,而是支持随意组合、自动装配、灵活插拔。 既能构建大并发高可用的分布式微服务架构也能搭建小巧的垂直单体分层架构。 安装相关盘古模块 <! spring.application.name=pangu-examples-empty-web spring.jackson.time-zone=GMT+8 logging.level.root=INFO 参考文献 开发架构模式对比 如何开发单体应用 [盘古开发框架形象大使.gif]

    76411编辑于 2022-04-17
  • 来自专栏伪架构师

    如何从单体应用中拆分富数据服务

    在将单体应用拆分为较小服务的过程中,最难的部分就是单体服务数据库中的数据拆分。要进行这样的拆分,保证数据有一个全程唯一的写拷贝,并且遵循一系列步骤是很有帮助的。 拆分步骤从对现有单体应用的逻辑分割开始:将服务行为拆分为一个单独的模块,然后把数据拆分到单独的数据表中。一系列动作之后,这些元素最终成为一个自治的新服务。 从单体应用向较小服务的迁移是目前的主流趋势。 这个转换过程之中最难的部分,就是从单体应用所持有的数据库中把新服务所属的数据拆分出来。如果从单体应用中拆分出来的逻辑部分仍然连接到同一个数据库,这种拆分无疑是比较简单的。 图 5:商品定价服务分拆成了新的“物理”服务,新服务在数据方面要依赖单体应用中的 ProductPrices 表,而功能上则要依赖于单体应用中的核心产品功能。 图 8:从旧数据库中同步定价数据表给新建的定价数据库。 步骤 8:让新服务使用新数据库 开始之前,必须要保证所有使用定价功能的客户端迁移到新的服务上去。

    2.1K30发布于 2019-07-23
  • 来自专栏CRPER折腾记

    MacOS:快速配置单体k8s开发环境

    前言 记录下我们如何在MacOS上快速搭建一套k8s的开发学习环境; 既然快速,那就尽可能减少编译这些行为了. 系统依赖 安装kubectl和minikube及helm kubectl: 就是用来控制(配置)kubernetes命令行工具 minikube: 可以创建单机版 kubernetes集群 helm: k8s docker-machine-driver-hyperkit 唯一值得注意的可能就是智能提示的配置,因为我本地用的oh-my-zsh, 所以 .zshrc 可以这样配置 # 启动oh-my-zsh针对k8s VS Code VS Code是我的主力开发工具,所以我也针对性的找了下配套的插件 Kubernetes 微软维护的k8s管理插件 VS Code Marketplace Docker 总结 这一套配置下来,本地就可以玩单体的k8s环境了. 至于istio(网格管理),不同平台安装姿势有所差异, 具体可以参考这里 istio 安装.

    1.2K20发布于 2020-07-08
领券