基础编程学习快乐每一天
首页
留言
Siddim.com
当前位置:
首页
>
编程知识库
>
后端开发知识
>
面试官:谈谈什么是微服务?
面试官:谈谈什么是微服务?
阅读
1
2020-06-30
: 小
Flag
实现,
注:本文以面试应答目的为主,深入学习请自行查阅其他资料,后续会汇总一些微服务相关面试题
什么是微服务
微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。
一.单体架构
1.1什么是单体架构
在软件设计的时候经常提到和使用经典的
3
层模型,即表现层,业务逻辑层,数据访问层。虽然在软件设计中划分了
3
层模型,但是对业务场景没有划分,一个典型的单体架构就是将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中最终经过编译,打包,部署在一台服务器上。此时服务架构如图:
1.2单体架构存在的不足
在小型应用的初期,访问量小的时候这种架构的性价比还是比较高的,开发速度快,成本低,但是随着业务的发展,逻辑越来越复杂,代码量越来越大,代码得可读性和可维护性越来越低。用户的增加,访问量越来越多单体架构的应用并发能力十分有限。
可能会有人想到将单体应用进行集群部署,并增加负载均衡服务器,再来个缓存服务器和文件服务器,数据库再搞个读写分离。这种架构如图:
这种架构虽然有一定的并发能力,及应对一定复杂业务,但是依然没有改变系统为单体架构的事实。大量的业务必然会有大量的代码,代码得可读性和可维护性依然很差。如果面对海量的用户,它的并发能力依然不够。基于以上单体架构系统的不足,提出了微服务架构。
二.微服务
2.1什么是微服务
说了这么多现在来看看到底什么是微服务。微服务最初是由
Martin
Fowler
提出来的他的理解如下:
微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是
HTTP
RESTFUL
API
。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。
总结起来微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过
HTTP
协议进行通信(也可以采用消息队列来通信,如
RoocketMQ
,
Kafaka
等),可以采用不同的编程语言,使用不同的存储技术,自动化部署(如
Jenkins
)减少人为控制,降低出错概率。服务数量越多,管理起来越复杂,因此采用集中化管理。例如
Eureka
,
Zookeeper
等都是比较常见的服务集中化管理框架。
2.2微服务的优势
将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。
微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。
服务间采用
HTTP
协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。
微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。
2.3微服务和SOA的关系
SOA
即面向服务的架构,
SOA
是根据企业服务总线(
ESB
)模式来整合集成大量单一庞大的系统,微服务可以说是
SOA
的一种实现,将复杂的业务组件化。但它比
ESB
实现的
SOA
更加的轻便敏捷和简单。
出处:
https
://
www
.
jianshu
.
com
/
p
/
d9504fc0af4d
? ~
以上数据来源于网络,如有侵权,请联系删除。
上一篇:
谈谈在项目中,如何应对高并发流量
下一篇:
面试官:什么是熔断?什么是服务降级?
评论
(0)
提交
类别
基础编程学习
HTML
PHP
Python
编程知识库
后端开发知识
热门文章
Java并发中的同步容器与并发容器,你了解多少?
Innodb中的事务隔离级别和锁的关系,难倒一半面试者!
SpringBoot + minio实现分片上传、秒传、续传
面试官:你知道消息队列如何保证数据不丢失吗?
JAVA知识 Java8新特性
面试官:谈谈为什么要限流,有哪些限流方案?
说说动态代理与静态代理区别
面试官:思考Tomcat 类加载器为什么要违背双亲委派模型?
boot-admin 基于SpringBoot的后台权限管理系统,可作为脚手架,用于快速搭建项目
SpringBoot+Vue+App+硬件实现智能家居系统项目