设计为服务的最佳实践(转)

你是否曾想过,什么是微服务?以及大规模的互联网行业,例如社交,电商,物流,金融等领域,如何使用微服务构建互联网应用以满足用户需求。

要了解微服务是什么,你必须了解如何将单体应用程序,拆解为独立打包和部署的微型应用程序。本文章将帮助你清晰化的理解,开发者如何根据需求使用微服务来构建他们的应用程序。

下面,从以下几个维度进行阐述

为何选择微服务?

什么是微服务?

微服务架构的功能

微服务架构的优点

设计微服务的最佳实践

1,为何选择微服务?

现在,在我介绍微服务之前,让我们看看在微服务之前流行的架构,即单体架构。

通俗地说,您可以说它类似于一个大容器,在这个容器中,应用程序的所有软件组件被紧密地打包并部署在一起。

罗列一下单片架构的挑战:

不灵活 - 单片应用程序无法使用不同的技术构建

不可靠 - 即使系统的某个功能不起作用,整个系统也不起作用

不可扩展 - 由于每次需要更新应用程序时都无法轻松扩展应用程序,因此必须重建整个系统

妨碍持续开发 - 无法同时构建和部署应用程序的多个功能

缓慢的开发 - 单体应用程序的开发需要花费大量的时间来构建,因为每个功能都必须一个接一个地构建

不适合复杂的应用程序 - 复杂应用程序的功能具有紧密耦合的依赖关系

上述挑战是导致微服务发展的主要原因。

2,什么是微服务?

微服务,又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合。

在微服务架构中,每个服务都是独立的,并实现单一业务功能。

传统架构与微服务架构之间的差异

以电子商务网站为例,了解它们之间的差异。

我们在上图中观察到的主要区别是,所有功能最初都在共享单个数据库的单个实例下。 但是,通过微服务,每个功能都被分配了不同的微服务,处理自己的数据,并执行不同的功能。

现在,让我们通过查看其架构来了解有关微服务的更多信息。请参考下图:

微服务架构

1,来自不同设备的不同客户端尝试使用不同的服务,如搜索,构建,配置和其他管理功能

2,所有服务都根据其域和功能分开,并进一步切分成各个微服务

3,这些微服务有自己的负载均衡器和执行环境来执行它们的功能,同时在自己的数据库中捕获数据

4,所有微服务都通过无状态服务器(REST或消息队列)相互通信

5,微服务在服务发现中心的帮助下获取其通信路径,并执行自动化,监控等操作功能

6,然后,微服务执行的所有功能都通过API网关传达给客户端

7,所有内部点都从API网关连接。因此,任何连接到API网关的人都会自动连接到整个系统

现在,让我们通过查看其功能来了解有关微服务的更多信息。

3,微服务功能

解耦 - 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展

组件化 - 微服务被视为可以轻松更换和升级的独立组件

业务能力 - 微服务非常简单,专注于单一功能

自治 - 开发人员和团队可以彼此独立工作,从而提高速度

持续交付 - 通过软件创建,测试和审批的系统自动化,允许频繁发布软件

职责 - 微服务不关注作为项目的应用程序。相反,他们将应用程序视为他们负责的产品

分散治理 - 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题

敏捷 - 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃。

4,微服务的优点

独立开发 - 所有微服务都可以根据各自的功能轻松开发

独立部署 - 基于其服务,可以在任何应用程序中单独部署它们

故障隔离 - 即使应用程序的一项服务不起作用,系统仍可继续运行

混合技术堆栈 - 可以使用不同的语言和技术来构建同一应用程序的不同服务

粒度缩放 - 单个组件可根据需要进行部署节点缩放,无需将所有组件部署缩放在一起

5,设计微服务的最佳实践

在当今世界,复杂性已经蔓延到互联网的每个产品当中。微服务架构有望保持团队规模和功能更好。

现在,让我们看一个案列来更好地理解微服务。

案例:购物网站

当您打开购物网站时,您看到的只是一个购买页面。但是,在幕后,购物网站具有接受付款的服务,用于客户咨询的服务等

假设此网站的开发人员已在单一框架中创建它。请参阅下图:

因此,所有功能都放在一个代码库中,并且位于单个底层数据库下。

现在,让我们假设市场上出现了一个新的品牌,开发商希望将即将到来的品牌所有细节都放在这个网站中,原有的数据库结构和UI展示已经无法满足。

然后,他们不仅需要为新标签重做服务,而且还必须重新构建整个系统并相应地进行部署。

为避免此类挑战,购物网站的开发人员决定将其应用程序从单片架构转移到微服务。请参阅下图了解购物网站的微服务架构。

这意味着开发人员不会创建Web微服务,逻辑微服务或数据库微服务。相反,他们为搜索,推荐,客户服务等创建单独的微服务。

这种类型的应用程序架构不仅可以帮助开发人员克服以前架构所面临的所有挑战,还可以帮助轻松构建,部署和扩展购物车应用程序。

通过上述案列,我们可以总结出来,设计微服务的最佳实践:

1,为每个微服务分别存储数据

2,将代码保持在类似的成熟度级别

3,为每个微服务单独构建

4,部署到容器

5,将服务设计为无状态服务

原文地址:https://www.cnblogs.com/alljoyn/p/9504325.html

时间: 2024-11-10 14:12:56

设计为服务的最佳实践(转)的相关文章

基于AWS的云服务架构最佳实践

ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关理念,并以最佳实践的方式加以实施.在今天的"信息时代",这些理念更加适用于不断增长的数据集,不可预知的流量模式,以及快速响应时间的需求.本文将强调并重申其中的一些传统观念,并讨论他们如何在融合云计算的发展,还将讨论由于云计算的动态性而产生的一些前所未有的概念(如弹性). 本文的目标是面向云

保护REST API/Web服务的最佳实践

在设计REST API或服务时,是否存在处理安全性(身份验证,授权,身份管理)的最佳实践? 在构建SOAP API时,您可以使用WS-Security作为指导,有关该主题的文献很多.我发现了有关保护REST端点的更少信息. 尽管我了解REST故意没有类似于WS- *的规范,但我希望最佳实践或推荐模式已经出现. 任何有关文件的讨论或链接将非常感激. 如果它很重要,我们将使用WCF和POX/JSON序列化消息来构建使用.NET Framework v3.5构建的REST API/Services.

从Uber微服务看最佳实践如何炼成?

导读:Uber成长非常迅速,工程师团队快速扩充,据说Uber有2000名工程师,8000个代码仓库,部署了1000多个微服务.微服务架构是Uber应对技术团队快速增长,功能快速上线很出色的解决方案.本文偏向微服务的入门篇,以Uber微服务为例,进行了深入浅出的讲解. 微服务特性 对于微服务没有适当的定义,你可以说它是一个框架,由小型的.独立的可部署的服务组成,执行不同的操作. 微服务专注于单个业务领域,可以作为完全独立的可部署服务,并在不同的技术栈上实现它们. 单体架构和微服务架构区别 在使用微

服务的最佳实践——后台执行的定时任务

创建一个ServiceBestPractice项目,然后新增一个LongRunningService类,代码如下所示: package com.example.servicebestpractice; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent;

服务的最佳实践--完整版的下载示例

这里主要是<Android第一行代码>第二版书中10.6碰到的问题和解决方法,记录下来希望能帮到大家,也希望大家有更好的解决方案能一起交流.. Android Studio版本如下: 这里我先列出按照书上代码运行会出现的错误: (1).java.net.UnknownServiceException: CLEARTEXT communication to raw.githubusercontent.com not permitted by network security policy (2)

jQuery插件的编写相关技术 设计总结和最佳实践

原文:http://www.itzhai.com/jquery-plug-in-the-preparation-of-related-technical-design-summary-and-best-practices.html 1.声明插件名称: 添加一个函数到jQuery.fn(jQuery.prototype)对象,该函数的名称就是你的插件名称: jQuery.fn.myPlugin = function() { // Do your awesome plugin stuff here

两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践

前言Spring Boot是最流行的用于开发微服务的Java框架.在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践.这些内容是基于我的个人经验和一些熟知的Spring Boot专家的文章. 在本文中,我将重点介绍Spring Boot特有的实践(大多数时候,也适用于Spring项目).以下依次列出了最佳实践,排名不分先后. 1.使用自定义BOM来维护第三方依赖 这条实践是我根据实际项目中的经历总结出的. Spring Boot项目本身使用和集成了大量

(转)微服务框架落地实践之路

http://www.primeton.com/read.php?id=2276&his=1 一.微服务架构产生的背景 近十年中,互联网给我们生活带来了翻天覆地的变化,消费者的生活方式日益数字化,人们可以在任何时间.任何地点利用网络进行购物体验,运用社交媒体进行自我表达,企业也在运用多种技术手段,发挥数字化潜力,改善客户联系,促进企业业务模式的转型.在这种背景下,互联网也好,传统企业也罢,都面临一个共同的需求:面对快速变化的需求,面对业务模式的升级,如何构建出灵活的,可扩展,可重用的系统? 前几

Standby Redo Logs的前世今生与最佳实践

编辑手记:使用过Data Guard的人应该对于Standby Redo Logs都不陌生,在配置了 Standby Redo Logs的standby中,能够进行日志的实时应用,同时Standby Redo Logs能够给主库传输过来的日志增加一层安全保护.然而在很多的生产环境中,大家都很少使用Standby Redo Logs.本文将会深入剖析Standby Redo Logs的前世今生,工作机制以及一些最佳实践. 本文翻译自BPeaslandDBA的博客. 原文链接:https://com