分布式基础概念
1、微服务
拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行
1.1什么是微服务?
微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的 API 进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。
微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。
1.2整体式架构与微服务架构
通过整体式架构,所有进程紧密耦合,并可作为单项服务运行。这意味着,如果应用程序的一个进程遇到需求峰值,则必须扩展整个架构。随着代码库的增长,添加或改进整体式应用程序的功能变得更加复杂。这种复杂性限制了试验的可行性,并使实施新概念变得困难。整体式架构增加了应用程序可用性的风险,因为许多依赖且紧密耦合的进程会扩大单个进程故障的影响。
使用微服务架构,将应用程序构建为独立的组件,并将每个应用程序进程作为一项服务运行。这些服务使用轻量级 API 通过明确定义的接口进行通信。这些服务是围绕业务功能构建的,每项服务执行一项功能。由于它们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定功能的需求。
1.3微服务的特性
1.3.1自主性
可以对微服务架构中的每个组件服务进行开发、部署、运营和扩展,而不影响其他服务的功能。这些服务不
需要与其他服务共享任何代码或实施。各个组件之间的任何通信都是通过明确定义的 API 进行的。
1.3.2专用性
每项服务都是针对一组功能而设计的,并专注于解决特定的问题。如果开发人员逐渐将更多代码增加到一项服务中并且这项服务变得复杂,那么可以将其拆分成多项更小的服务。
1.4微服务的优势
1.4.1敏捷性
微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,并且可以更独立、更快速地工作。这缩短了开发周期时间。您可以从组织的总吞吐量中显著获益。
1.4.2灵活扩展
通过微服务,您可以独立扩展各项服务以满足其支持的应用程序功能的需求。这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。
1.4.3轻松部署
微服务支持持续集成和持续交付,可以轻松尝试新想法,并可以在无法正常运行时回滚。由于故障成本较低,因此可以大胆试验,更轻松地更新代码,并缩短新功能的上市时间。
1.4.4技术自由
微服务架构不遵循“一刀切”的方法。团队可以自由选择最佳工具来解决他们的具体问题。因此,构建微服务的团队可以为每项作业选择最佳工具。
1.4.5可重复使用的代码
将软件划分为小型且明确定义的模块,让团队可以将功能用于多种目的。专为某项功能编写的服务可以用作另一项功能的构建块。这样应用程序就可以自行引导,因为开发人员可以创建新功能,而无需从头开始编写代码。
1.4.6 弹性
服务独立性增加了应用程序应对故障的弹性。在整体式架构中,如果一个组件出现故障,可能导致整个应用程序无法运行。通过微服务,应用程序可以通过降低功能而不导致整个应用程序崩溃来处理总体服务故障。
2、集群、分布式、节点
2.1集群
2.1.1集群的特点
通过多台计算机完成同一个工作,达到更高效率。
两机或多机内容、工作过程完全一样。如果一台死机,另一台可以起作用。
2.1.2集群的优点
本来只有一台机器处理访问,现在有两台机器处理访问了,分担了压力。
如果两台或多台机器同时运行,如果其中一台出现了故障,不会影响其他机器的运行。
2.2分布式
2.2.1分布式概念
分布式系统是一组计算机,通过网络相互连接传递消息与通信后并协调他们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。
2.2.2分布式优点
1、模块之间独立,各做各的事,便于扩展,复用性高
2、高吞吐量。某个任务需要一个机器运行10个小时,将该任务用10台机器的分布式跑(将这个任务拆分成10个小任务),可能2个小时就跑完了
2.3节点
节点就相当于集群中的一个服务器。
2.4分布式与集群的区别
分布式是个工作方式,集群是个物理状态。
分布式是指将不同的业务分布在不同的地方,而集群指的是将几台服务器集中在一起,实现同一业务。
分布式上的节点都能看作是一个集群。集群不一定是分布式的。
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
3、远程调用
在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我们称为远程调用
SpringCloud中使用Http+Json的方式完成远程调用(这样做的好处就是:天然的跨平台性,json在任意平台都可以使用,包括http请求都可以兼容!)