参考资料:
1.https://www.martinfowler.com/articles/microservices.html
2.https://microservices.io/patterns/microservices.html
一.微服务介绍
1.微服务是一种软件系统风格
1.将单个应用程序作为一套小型服务开发的方法;
2.每种应用程序都在自己的进程中运行;
3.并与轻量级机制(通常是HTTP API)进行通信;
4.服务是围绕业务功能构建的;
5.可通过全自动部署机制独立部署;
6.集中管理最少;
7.可使用不同的语言编写;
8.可使用不同的数据存储技术;
2.提取要点
1.一个应用程序就是一个服务;
2.一个服务是具有自己独立的进程的;
3.服务间通过http协议进行通讯;
4.每个服务可以由不用的语言编写;
5.每个服务都可以有自己独立的存储技术.
二.微服务架构的特点
2.1优点
1.服务组件化(Componentization via Services):业务被划分为更小的逻辑进行实现;
2.围绕业务进行组织:(Organized around Bussiness Capabilities):逻辑只围绕具体的业务来实现;
3.产品不是项目;
4.只能端点和哑管(Smart endpoints and dumb pipes):服务间调用的方式
5.去中心化治理(Decentralized Governance):组件能够根据不同的业务特点选择不同的技术平台;
6.去中心数据管理(Decentralized Data Management):组件能够针对不同的业务特点选择不同的存储技术;
7.基础设施自动化(Infrastructure Automation):自动化测试,自动化部署;
8.容错机制(Desgin for failure):能快速定位错误,并快速修复错误;
9.演进式设计 (Evolutionary Desgin):根据业务发展,可以不断进化升级;
2.2缺点
1.分布式系统复杂度高;
1.1测试复杂度更高
1.2开发者必须实现服务器间的通信机制
1.3如果不使用分布式事务,会很难实现跨多个服务的用例;
1.4实现多个服务的用例需要团队间的更认真的合作;
2.生产环境部署复杂度高;
3.内存消耗更多;
三.SpringCloud
springcloud是快速构建分布式系统的工具集,可以实现微服务
1.Eureka Server 服务注册中心
2.Eureka Client 服务注册者
3.Feign Client 服务消费者
4.API GateWay : API网关 : Zuul
特点:
1.1.注册中心具有高可用性;注册中心即是注册中心,也是注册者;
1.2.Feign高可用性;Feign实现了服务器间的调用,也实现了负载均衡;
1.3.API GateWay : 同一了端口,集中式管理接口,请求的唯一出入口;
网友评论