简介
AUTOBEAR的微服误架构的个人学习笔记,本笔记随时增添,用来巩固知识,查缺补漏。
几种架构对比
单体应用架构:
优点:开发简单、适合小型应用
缺点:不易拓展、维护、代码高度耦合
垂直应用架构:
优点:解决高并发问题、针对不同模块优化、方便水平扩展、容错
缺点:系统间相互独立、重复开发工作
分布式架构(展示层、ESB总线/DUBBO框架、服务层、数据源):
优点:易拓展、维护、代码可复用度高、代码低耦合
缺点:服务的评估、治理、调度比较复杂。
SOA:
优点:抽取公共的共能为服务,提高开发效率,对不同的服务进行集群化部署解决系统压力,系统低耦合。
缺点:服务的粒度较大、服务提供方与调用方接口耦合度高。
微服务架构(客户端、服务网关、服务层【粒度小】、数据源):
优点:服务原子化拆分,微服务的独立打包、部署、升级、团队的交付周期将缩短、运维成本降低。
微服误遵循单一原则,采用轻量传输协议。
缺点:微服务过多,治理成本高,不利于系统维护。
分布式系统开发的技术成本高(容错、分布式事务等)
核心概念:
1.远程调用技术
RPC(Remote procedure call):屏蔽底层的传输方式做到透明、简单,TCP(序列化、网络传输TCP协议、反序列化),适合SOA架构
RESTful:HTTP协议,性能略低、灵活度高,适合微服务架构。
2.CAP原理
C:一致性(多节点数据一致)
A:可用性(保持服务可用、多节点)
P:分区容忍性(是否可以将数据存到多个地方)
AC:传统物理数据库、AP:短暂允许数据不一致,如NOSQL、CP:放弃可用性,如zookeeper。
常见的微服务框架:
SpringCloud、ServiceComb、ZeroC ICE
SpringCloud:一系列系统框架的有序集合、利用Spring Boot的开发便利性、巧妙简化了分布式系统基础设施的开发(服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控)。
我使用过的一套开发集成平台工具
OTM:jeesite-Java快速开发框架,基于经典技术组合(Spring MVC、Apache Shiro、MyBatis、Bootstrap UI),包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流等。虽说很长时间没有大的更新了,但它的架构精良易于扩展深受大家喜爱,依然是中小企业的首选,它的功能设计、底层架构也非常具有参考意义、是学习入门的首选。
JeeSite本身是以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层,Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流引擎。
乱七八糟
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期实体对象持久化到数据库中。
SSM框架:Spring+SpringMVC+mybatis
RestTemplate(类似有urlconnection、httpclient、okhttp)
API网关,请求路径+负载均衡+配置统一管理+链路追踪
请求路径:注册中心(服务发现、服务配置、服务健康检测),Eureka(Eureka Server)