名词解释:数据库
1)表示层:用于直接和用户交互,也称交互层,一般指网页、UI等。编程
2)业务逻辑层:用户输入的信息通过业务逻辑层的处理展示给用户,即后端代码的实现部分。后端
3)数据访问层:用于操做数据库,对数据库进行读写操做。缓存
4)单体框架:在一台服务器部署全部资源,包括应用程序、数据库、文件资源。(适用于小型应用的初期阶段,访问量较小)服务器
5)熔断机制:高并发状况下线程阻塞,线程资源消耗殆尽,致使服务不可用。因为服务的相互依赖,致使整个系统不可用,为防止相似事情产生,使用熔断机制。设置阀值、自我修复机制。架构
6)CAP理论:C(Consistency 数据一致性)A(Availability 服务可用性)P(Partition-tolerance 分区容错)不可能设计出知足三点的系统,已被证明。单体框架:CA系统,微服务:AP系统;并发
7)分布式事务:分阶段实现:第一阶段:将事务交给事务处理器TC,TC向全部参与事务的节点发送事务操做的准备,全部参与操做的节点进行执行,将Undo和Redo信息写进日志;第二阶段:收集全部操做的结果,若都成功就提交,不然回滚。若出现异常致使整个事务阻塞,下降数据库性能。负载均衡
随着愈来愈多的用户参与,业务场景愈来愈复杂,传统的单体架构很难知足互联网技术的发展,主要体如今两方面:1)随着业务复杂度的提升,代码的可维护性、拓展性和可读性下降;2)维护系统的成本、修改系统的成本在提升。框架
将单一程序开发成一个微服务,这些服务可使用不一样的编程语言以及数据存储技术,每个微服务运行在本身的进程中,使用轻量级机制通讯,并经过彻底自动化部署机制来独立部署。编程语言
1)按业务划分红独立运行的程序,即服务单元(高度组件化的模块,服务之间没有任何耦合,有良好的扩展性和复用性,单个微服务内部高度耦合);
2)程序之间经过HTTP协议相互通讯(数据格式:JSON、XML、Protobuf;Protobuf比JSON更轻量,JSON比XML更轻量,Protobuf序列化的数据为二进制,可读性差);
3)自动化部署(Docker容器,Jenkins自动化部署工具);
4)可使用不一样的编程语言和存储技术(C、C++、Java;关系型数据库MySQL,非关系型数据库MonGDB、Redis);
5)服务集中化管理(Eureka注册与发现服务;Zookeeper、Consul等服务集中管理管理框架);
6)微服务是一个分布式系统(集群部署的,不少计算机相互协做共同构成)。
1)将复杂的问题简单化,实现小的业务,易于维护和更改;
2)极强的横向扩展能力:随着业务增长用户量增多能够继续细化;
3)微服务的单元是独立部署的,修改单个的功能对其余服务没有影响;
4)分布式提升了系统的负载能力。
1)服务的划分:微服务具体要划分红多小的服务单元难以具体定义;
2)服务的部署:对每一个微服务进行治理、监控和管理,在配置过程当中考虑启动顺序和启动时机;
3)分布式事务:基于CAP理论,对数据一致性的处理,多采用两阶段/三阶段处理;
4)微服务的复杂度:构建、通讯机制、测试;
SOA是面向服务的框架,微服务是将服务组件化;
微服务是SOA的一种实现,比ESB(企业服务总线)实现的SOA更加轻便、敏捷和简单。
软件设计应该渐进式发展,不该该一开始就设计成微服务框架,小的系统能够先设计成LAMP单体构架,在企业发展的过程当中能够转换成微服务的框架。
增长效率的方法:数据库读写分离、加缓存、加负载均衡等。
读了方志鹏老师的《深刻理解Spring Cloud与微服务构建》一书有感,这里只是简单的作了下总结以供本身后续学习。对于本记录若发现错误还请指出,如有疑问,也欢迎前来交流,qq:1164266197 Docen。