个人理解
模块化、各自进程运行、与轻量级机制(通常是HTTP资源API)进行通信、全自动部署机制独立部署、使用不同的数据存储技术
独立部署,灵活扩展
Docker,为微服务架构提供了有效的容器
资源的有效隔离
每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。
每一个微服务实例在Docker容器上运行,实现了服务器资源(内存、CPU资源等)的有效隔离
微服务与面向服务架构SOA的区别
SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署。
这个介绍详细
https://blog.csdn.net/dc2222333/article/details/80605715
微服务架构4个核心问题(模块化开发==all in one)
1、服务很多,客户端怎么访问?
2、这么多服务?服务之间如何通信?
3、这么多服务?如何冶理?
4、服务挂了怎么办?
解决方案
Spring Cloud 生态! SpringBoot
1.Spring Cloud NetFlix 一站式解决方案
1、api网关,zuul组件
2、Feign –HttpClinet — Http通信方式,同步,阻塞
3、服务注册发现: Eureka
4、熔断机制:Hystrix
2.Apache Dubbo zookeepr 半自动,需要整合别人的
1、API:没有,找第三方组件,或者自己实现
2、Dubbo:一个高性能的、基于java的开放源码RPC框架。
3、Zookeeper:=文件系统+监听通知机制
4、没有熔断机制: 要找Hystrix
5、Dubbo方案不完善
3.Spring Cloud Alibaba 一站式解决方案(最新)
新概念:服务网格~ Server Mesh
istio
万变不离其宗
1、API网关
2、HTTP,RPC
3、注册和发现
4、熔断机制
面试题
1、什么是微服务?
2、微服务之间如何独立通讯的?
3、SpringCloud和Dubbo有哪些区别?
4、SpringBoot和SpringCloud,请你谈谈对他们的理解
5、什么是服务熔断?什么是服务降级
6、微服务的优缺点分别是什么?说下你在项目开发中遇到的坑
7、你所知道的微服务技术栈有哪些?请列举一二
8、eurek和zookeeper都可以提供服务注册与发现的功能,请说说两个区别?