微服务和分布式是大型架构的必备系统,但是经常不太清楚两者的关系和区别,下面我重点详解微服务和分布式以及核心区别@mikechen
微服务
微服务,是一种将应用程序拆分为一组小型、独立服务的设计方法。
微服务是一种软件架构风格,将单一应用程序拆分为多个小的、独立的服务。
比如:用户服务、商品服务、交易服务…等等,每个服务,都专注应用程序的一个特定功能。
服务独立性
每个微服务,都可以独立部署、独立运行、独立扩展…等等,并且通常有自己的数据库、和存储。
技术多样性
每个微服务可以使用不同的编程语言(比如:Java、Go、Php…等等)、数据库(MySQL、Oracle…等等)和技术栈开发,根据需求选择最合适的技术。
自治性
每个服务拥有自己的业务逻辑、和数据存储,可以独立开发和部署。
每个微服务,运行在独立的进程中,并通过轻量级通信机制(如:HTTP、RPC…等等)进行交互。
总之,微服务这种架构,强调服务的独立性和自治性,通常围绕特定的业务功能构建。
分布式
分布式系统:指的是由多个互相独立的计算节点组成的系统,这些节点通过网络相互通信、和协作,共同完成任务。
分布式系统,是由多个相互协作的计算单元,比如:计算机、或服务器..等等组成,这些单元共同工作以提供一个看似单一的服务。
比如:
多个节点:分布式系统由多个计算机或处理器组成,每个节点都有自己的内存和处理能力;
自治:每个节点都可以独立运作,具有自己的控制和决策能力;
通信:节点之间可以通过网络、或其他通信方式,交换信息和数据;
协作:节点之间可以协作,以实现共同的目标或任务。
总之,分布式系统关注的是:如何在不同物理位置的计算机之间协调工作,以提高性能、和可靠性。
微服务和分布式区别
微服务是分布式的一种实现方式,微服务架构是一种实现分布式系统的具体方式。
微服务将系统拆分成更小的服务,这些服务可以部署在不同的机器上,从而实现分布式的特性。
而分布式系统并不一定就是微服务架构,一个分布式系统可以有不同的架构风格,比如SOA(面向服务的架构)。
微服务关注的是将单一应用拆分为多个独立服务,并在每个服务内部实现自治和灵活性。
分布式系统关注的是如何通过多个计算节点协调工作,保证系统的可扩展性、容错性和一致性。
mikechen睿哥
mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》