微服务是什么?微服务的优缺点有哪些?
微服务是 SOA 的一个简化版本,并且是具体的实现技术,采用容器对服务打包,可以这样说,如果没有容器技术,微服务就发展不起来。我们都知道,传统的单体应用程序会随着功能的扩展变得越来越庞大,最后修改代码、版本升级或者重新部署都会变得异常困难,甚至根本无法进行。
微服务的出现就是用来解决这个问题的——把一个庞大的单体应用横向切割成若干个微服务,每个微服务只做一件事,但它仍然包含展现层、应用层和数据层。微服务单独运行,对外暴露 API 接口供其他程序调用。所以说,微服务侧重于替换企业内部的大型单体应用,以便于应用程序的可持续演进(持续代码完善、持续版本升级、持续缩放部署、DevOps)。
由于每个微服务都有自己的数据层,所以这个带有状态的微服务就很难跨应用调用。由于每个微服务只做一件事,所以复杂度大大降低;另外,微服务可以单独开发和部署;再者,微服务可以单独缩放扩容,这些都是优点。
但是微服务也存在不足之处:微服务之间的调用关系更复杂,数据一致性保证更复杂,总体微服务部署更复杂。一个典型的基于微服务的应用部署包括若干个微服务实例、API 网关、微服务注册机构及若干负载均衡器等。
微服务的出现就是用来解决这个问题的——把一个庞大的单体应用横向切割成若干个微服务,每个微服务只做一件事,但它仍然包含展现层、应用层和数据层。微服务单独运行,对外暴露 API 接口供其他程序调用。所以说,微服务侧重于替换企业内部的大型单体应用,以便于应用程序的可持续演进(持续代码完善、持续版本升级、持续缩放部署、DevOps)。
由于每个微服务都有自己的数据层,所以这个带有状态的微服务就很难跨应用调用。由于每个微服务只做一件事,所以复杂度大大降低;另外,微服务可以单独开发和部署;再者,微服务可以单独缩放扩容,这些都是优点。
但是微服务也存在不足之处:微服务之间的调用关系更复杂,数据一致性保证更复杂,总体微服务部署更复杂。一个典型的基于微服务的应用部署包括若干个微服务实例、API 网关、微服务注册机构及若干负载均衡器等。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算