1.微服务与微服务架构?
传统的单体应用部署在一台服务器上,每个部分出现问题,则可能导致整个系统不能使用,而且整个系统会过于庞大。将这个单体应用拆分为多个子系统,每个子系统只负责实现部分模块,将其部署在多台服务器上,某个子系统出现问题,不太可能影响整个系统。
微服务关注的是一个点,强调的是服务的大小,是针对具体某一个问题提供的服务应用。而微服务架构是一种架构模式,它提倡将一个应用划分为划分为多个小的服务,各个服务之间能够相互协调,互相配合。每个服务运行在独立的进程当中,服务之间采用轻量级通信方式通信。
2.微服务的四个核心问题?
(1)众多服务,客户端如何访问;
(2)众多服务之间如何通信;
(3)服务如何治理;
(4)服务如果挂了怎么办。
3.微服务解决方案?
方案一:Spring Cloud NetFlix (一站式解决方案)
如何访问:API网关,zuul组件
如何通信:Feign-httpclinet-http通信方式
服务注册发现:Eureka
熔断机制:Hystrix
方案二:dubbo+zookeeper(组件不够完整需要整合别人的)
访问组件:第三方组件
通信方式:rpc
服务注册发现:zookeeper
熔断机制:借助Hystrix
方案三:Spring Cloud Alibaba(一站式解决方案 简单)
4.微服务优缺点?
优点:单一职责原则;
每个服务足够小,代码容易理解,能够聚焦于一个指定的业务功能;
开发简单,效率高,一个服务只专注于一件事;
微服务能够被小团队单独开发;
微服务是松耦合的;
微服务能使用不同的语言开发;
易于和第三方集成,可通过持续集成工具jenkins,Hudson,banboo;
微服务只是业务逻辑代码,不会和html等前端混合;
每个微服务都可以有自己的存储能力,有自己独立的数据库,也可以是统一的数据库。
缺点:
开发人员需要处理分布式系统的复杂性;
多服务运维难度增加;
数据一致性;
服务间通信成本。