微服务?集群?分布式?CAP-BASE定理?RPC?

一、微服务

微服务是一种面向服务的架构(SOA)风格(Java开发人员最重要的技能之一),其中,应用程序被构建为多个不同的小型服务的集合而不是单个应用程序。与单个程序不同的是,微服务让你可以同时运行多个独立的应用程序,而这些独立的应用程序可以使用不同的编码或编程语言来创建。庞大而又复杂的应用程序可以由多个可自行执行的简单而又独立的程序所组成。这些较小的程序组合在一起,可以提供庞大的单程序所具备的所有功能。

微服务是一种面向服务的架构风格,具有灵活性和低成本两个特点.

  • 灵活性:由于这些较小的应用程序无需使用相同的编程语言,因此,开发人员可以使用他们最熟悉的语言,这是灵活性.
  • 低成本:由于他们都用自己擅长的语言去开发,所以效率会高,相应的开发成本会降低.

1.单体应用(ALL IN ONE)

一个单块应用系统是以一个单个单元的方式来构建的。企业应用系统经常包含三个主要部分:客户端用户界面、数据库和服务端应用系统。客户端用户界面包括HTML页面和运行在用户机器的浏览器中的JavaScript。数据库中包括许多表,这些表被插入一个公共的且通常为关系型的数据库管理系统中。这个服务端的应用系统就是一个单块应用。
在这里插入图片描述

2.单体应用的缺点

软件变更受到了很大的限制,应用系统中一个很小部分的一处变更,也需要将整个单块应用系统进行重新构建和部署。随着时间的推移,单块应用逐渐难以保持一个良好的模块化结构,这使得它变得越来越难以将一个模块的变更所产生的影响控制在该模块内。当对系统进行扩展时,不得不扩展整个应用系统,而不能仅扩展该系统中需要更多资源的那些部分。

3.催生出微服务架构风格

以构建一组小型服务的方式来构建应用系统。除了这些服务能被独立地部署和扩展之外,每一个服务还能提供一个稳固的模块边界,甚至能允许使用不同的编程语言来编写不同的服务。这些服务也能被不同的团队来管理。
在这里插入图片描述

4.微服务应用(大型分布式应用)

在这里插入图片描述
一个微服务应用应该是一组小型服务;
每一个节点代表一个服务,服务之间可以通过HTTP方式进行互通;
每一个功能元素最终都是一个可独立替换和独立升级的软件单元。
不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难。

二、集群

在这里插入图片描述
集群模式是不同服务器部署同一套服务对外访问,实现服务的负载均衡。
区别集群的方式是根据部署多台服务器业务是否相同。

注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。
一般配置Nginx的负载容器实现:静态资源缓存、Session共享可以附带实现,Nginx支持5000个并发量。

三、分布式

所谓分布式,无非就是将一个系统拆分成多个子系统并分布到多个服务器上,这些对于用户就像单个相关系统.

简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。

1.分布式与微服务的关系

简单的说,微服务是架构设计方式,分布式是系统部署方式,两者概念不同

分布式是将多个子系统分布到多个服务器,而这些子系统可能包含多个服务。所以说,微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难。

生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值