软件设计
lcli
这个作者很懒,什么都没留下…
展开
-
系统拆分之按业务进行拆分
上下文您正在开发一个大型,复杂的应用程序,并希望使用微服务架构。微服务架构将应用程序构造为一组松散耦合的服务。微服务架构的目标是通过实现持续交付/部署来加速软件开发。微服务架构以两种方式实现:简化测试并使组件能够独立部署 将工程组织构建为小型(6-10个成员)自治团队的集合,每个团队负责一个或多个服务这些好处不会自动得到保证。相反,它们只能通过将应用程序细致地功能分解为服务来实...翻译 2018-11-03 14:30:18 · 5810 阅读 · 0 评论 -
应用架构模式之单片架构
背景您正在开发服务器端企业应用程序。它必须支持各种不同的客户端,包括桌面浏览器,移动浏览器和本机移动应用程序。该应用程序还可能会公开供第三方使用的API。它还可以通过Web服务或消息代理与其他应用程序集成。应用程序通过执行业务逻辑来处理请求(HTTP请求和消息);访问数据库;与其他系统交换消息;并返回HTML / JSON / XML响应。存在与应用程序的不同功能区域相对应的逻辑组件。问题...翻译 2018-11-02 22:57:44 · 1111 阅读 · 0 评论 -
系统伸缩性设计之扩展立方体
在The Art of Scalability书中描述了一个非常有用的三维可伸缩性模型:扩展立方体。在此模型中,通过在负载均衡器后面运行克隆来扩展应用程序称为X轴缩放。另外两种缩放是Y轴缩放和Z轴缩放。微服务架构是Y轴缩放的应用,但我们也看看X轴和Z轴缩放。 X轴缩放X轴缩放包括在负载均衡器后面运行应用程序的多个副本。如果有N个副本,则每个副本处理1 / N的负载。这是一种简单,常...翻译 2018-11-02 23:31:42 · 538 阅读 · 0 评论 -
可扩展的Web架构和分布式系统设计(一)
开源软件已成为一些最大网站的基本构建块。随着这些网站的发展,围绕其架构的最佳实践和指导原则已经出现。本章旨在介绍设计大型网站时需要考虑的一些关键问题,以及用于实现这些目标的一些构建模块。本章主要关注Web系统,尽管某些材料也适用于其他分布式系统。1.1 Web分布式系统设计原理构建和运营可扩展的网站或应用程序到底意味着什么?在原始层面,它只是通过Internet将用户与远程资源连接起来...翻译 2018-11-04 21:41:43 · 1135 阅读 · 0 评论 -
可扩展的Web架构和分布式系统设计(二)
1.3 快速和可扩展数据访问的构建块在介绍了设计分布式系统时的一些核心考虑因素之后,我们现在谈谈困难的部分:扩展对数据的访问。大多数简单的Web应用程序,例如LAMP堆栈应用程序,如图1.5所示。 图1.5:简单的Web应用程序随着它们的发展,存在两个主要挑战:扩展对应用服务器和数据库的访问。在高度可扩展的应用程序设计中,应用程序(或Web)服务器通...翻译 2018-11-04 21:56:37 · 298 阅读 · 0 评论 -
GDB体系结构介绍(二)
4.7 符号方面GDB的符号端主要负责读取可执行文件,提取它找到的任何符号信息,并将其构建到符号表中。读取过程从BFD库开始。 BFD是一种用于处理二进制文件和目标文件的通用库;在任何主机上运行,它可以读取和写入原始的Unix a.out格式,COFF(用于System V Unix和MS Windows),ELF(现代Unix,GNU / Linux和大多数嵌入式系统),以及其他一些文...翻译 2018-11-07 08:07:28 · 810 阅读 · 0 评论 -
GDB体系结构(三)
4.9 与GDB的接口GDB基本上是一个命令行调试器。随着时间的推移,人们已经尝试了各种方案,使其成为一个图形窗口调试器,但尽管所有的时间和精力,这些都没有被普遍接受。命令行界面命令行界面使用标准GNU库读取线来处理与用户的逐个字符交互。 Readline处理行编辑和命令完成等事情;用户可以执行诸如使用光标键返回到一行并修复字符之类的操作。然后,GDB接受readline返回的命令,...翻译 2018-11-08 08:00:31 · 496 阅读 · 0 评论 -
Json Token介绍(一)
什么是JSON Web Token?JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方式,可以在各方之间作为JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。 JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。虽然JWT可以加密以在各方之间提供保密,但我们将专注于签名令牌。签名令牌可以验证其...翻译 2018-11-13 19:19:17 · 4097 阅读 · 0 评论 -
Json Token介绍(二)
JSON Web令牌如何工作?在身份验证中,当用户使用其凭据成功登录时,将返回JSON Web令牌。由于令牌是凭证,因此必须非常小心以防止出现安全问题。一般情况下,您不应该将令牌保留的时间超过要求。每当用户想要访问受保护的路由或资源时,用户代理应该使用承载模式发送JWT,通常在Authorization标头中。标题的内容应如下所示:Authorization: Bearer <t...翻译 2018-11-13 19:24:32 · 457 阅读 · 0 评论 -
Eclipse体系结构介绍(四)
6.4 Eclipse 4.0必须不断检查架构以评估它是否仍然合适。它能够融入新技术吗?它是否鼓励社区的成长?吸引新的贡献者是否容易?在2007年末,Eclipse项目提交者决定这些问题的答案是否定的,他们着手设计Eclipse的新愿景。与此同时,他们意识到有数千个Eclipse应用程序依赖于现有的API。 2008年底创建了一个孵化器技术项目,其中包含三个具体目标:简化Eclipse编程模型...翻译 2018-11-07 07:26:45 · 600 阅读 · 0 评论 -
Eclipse体系结构介绍(三)
6.3 Eclipse 3.4能够轻松地将应用程序更新为新版本并添加新内容是理所当然的。在Firefox中它无缝地发生。对于Eclipse来说,它并不那么容易。 Update Manager是用于向Eclipse安装添加新内容或更新到新版本的原始机制。要了解更新或安装操作期间的更改,有必要通过“功能”了解Eclipse的含义。功能是PDE工件,它定义了一组捆绑包,这些捆绑包以可以构建或安装...翻译 2018-11-07 07:14:53 · 476 阅读 · 0 评论 -
Eclipse体系结构介绍(二)
6.2 Runtime, RCP and Robots6.2.1 运行Eclipse 3.0可能是最重要的Eclipse版本之一,因为在此发布周期中发生了重大更改。在3.0之前的Eclipse架构中,Eclipse组件模型由可以以两种方式相互交互的插件组成。首先,他们可以通过在plugin.xml中使用requires语句来表达它们的依赖关系。如果插件A需要插件B,插件A可以看到B中的所有...翻译 2018-11-07 07:07:34 · 871 阅读 · 0 评论 -
系统拆分之按领域对象拆分
背景您正在开发一个大型,复杂的应用程序,并希望使用微服务架构。微服务架构将应用程序构造为一组松散耦合的服务。微服务架构的目标是通过实现持续交付/部署来加速软件开发。微服务架构以两种方式实现:简化测试并使组件能够独立部署 将工程组织构建为小型(6-10个成员)自治团队的集合,每个团队负责一个或多个服务这些好处不会自动得到保证。相反,它们只能通过将应用程序细致地功能分解为服务来实现...翻译 2018-11-03 14:55:35 · 864 阅读 · 0 评论 -
服务部署之单个主机多个服务实例
背景您已应用微服务架构模式并将系统架构为一组服务。每个服务都部署为一组服务实例,以实现吞吐量和可用性。问题如何打包和部署服务?诉求服务使用各种语言,框架和框架版本编写 每个服务由多个服务实例组成,用于吞吐量和可用性 服务必须可独立部署和扩展 服务实例需要彼此隔离 您需要能够快速构建和部署服务 您需要能够约束服务所消耗的资源(CPU和内存) 您需要监视每个服务实例的行...翻译 2018-11-03 15:02:44 · 2683 阅读 · 0 评论 -
服务部署之每个VM一个服务实例
背景您已应用微服务架构模式并将系统架构为一组服务。每个服务都部署为一组服务实例,以实现吞吐量和可用性。问题如何打包和部署服务?诉求服务使用各种语言,框架和框架版本编写 每个服务由多个服务实例组成,用于吞吐量和可用性 服务必须可独立部署和扩展 服务实例需要彼此隔离 您需要能够快速构建和部署服务 您需要能够约束服务所消耗的资源(CPU和内存) 您需要监视每个服务实例的行...翻译 2018-11-03 15:12:06 · 367 阅读 · 0 评论 -
可扩展的Web架构和分布式系统设计(三)
代理在基本级别,代理服务器是一个中间件硬件/软件,它接收来自客户端的请求并将它们中继到后端源服务器。通常,代理用于过滤请求,日志请求或有时转换请求(通过添加/删除标头,加密/解密或压缩)。 图1.13:代理服务器在协调来自多个服务器的请求时,代理也非常有用,从系统范围的角度提供优化请求流量的机会。使用代理加速数据访问的一种方法是将相同(或类似)请求一起...翻译 2018-11-06 22:38:58 · 392 阅读 · 0 评论 -
可扩展的Web架构和分布式系统设计(四)
负载均衡器最后,任何分布式系统的另一个关键部分是负载均衡器。负载平衡器是任何体系结构的主要部分,因为它们的作用是在负责服务请求的一组节点之间分配负载。这允许多个节点透明地为系统中的相同功能提供服务。 (参见图1.18。)它们的主要目的是处理大量的并发连接并将这些连接路由到其中一个请求节点,从而允许系统通过添加节点来扩展以服务更多请求。 图1....翻译 2018-11-06 22:46:24 · 260 阅读 · 0 评论 -
Eclipse体系结构介绍(一)
实现软件模块化是一项众所周知的艰巨任务。与多元化社区编写的大型代码库的互操作性也很难管理。在Eclipse,我们在两个方面都取得了成功。 2010年6月,Eclipse基金会推出了Helios协调发布版,其中包括来自40多家公司的39个项目和490个提交者,他们共同致力于构建基础平台的功能。 Eclipse最初的架构愿景是什么?它是如何演变的?应用程序的体系结构如何用于鼓励社区参与和增长?让我们回...翻译 2018-11-06 23:43:26 · 5722 阅读 · 0 评论 -
服务部署之通过容器部署服务实例
背景您已应用微服务架构模式并将系统架构为一组服务。每个服务都部署为一组服务实例,以实现吞吐量和可用性。问题如何打包和部署服务?诉求服务使用各种语言,框架和框架版本编写 每个服务由多个服务实例组成,用于吞吐量和可用性 服务必须可独立部署和扩展 服务实例需要彼此隔离 您需要能够快速构建和部署服务 您需要能够约束服务所消耗的资源(CPU和内存) 您需要监视每个服务实例的行...翻译 2018-11-04 15:46:32 · 908 阅读 · 0 评论 -
服务通信之远程过程调用(RPI)
背景您已应用微服务架构模式。服务必须处理来自应用程序客户端的请求。此外,服务有时必须协作处理这些请求。他们必须使用进程间通信协议。解决方案使用RPI进行服务间通信。客户端使用基于请求/回复的协议向服务发出请求。例子RPI技术有很多例子REST GRPC Apache Thrift来自Microservices示例应用程序的RegistrationServiceProx...翻译 2018-11-04 16:34:37 · 1026 阅读 · 0 评论 -
高性能Nginx介绍(二)
14.4 nginx内部如前所述,nginx代码库由核心和许多模块组成。 nginx的核心是负责提供Web服务器,Web和邮件反向代理功能的基础;它支持使用底层网络协议,构建必要的运行时环境,并确保不同模块之间的无缝交互。但是,大多数协议和应用程序特定的功能都是由nginx模块完成的,而不是核心模块。在内部,nginx通过模块的管道或链来处理连接。换句话说,对于每个操作,都有一个正在进行相...翻译 2018-11-08 22:55:00 · 218 阅读 · 0 评论