微服务的必要性

浅谈传统架构与微服务架构:

  传统架构是单一架构模式,就是将项目整体打包部署,比如java语言的项目会打成war包,部署在tomcat或者jetty应用服务器上,如果使用springboot还可以打成jar包

  微服务架构是将整体项目分割成项目关联的独立服务,一个服务通常会实现一组独立的功能,包含自己的逻辑,各个微服务之间关联通过暴露api来实现,这些独立的微服务可以部署在不同的服务器,虚拟机或系统中

为何要使用微服务架构:

  单一架构模式在项目初期的时候开发,测试,部署方便,但是随着项目逐步开发,项目工程会很大,最终互相之间会有繁琐的jar包

    1.不再适用于敏捷开发,任何开发人员都不能完全理解,在修复漏洞和添加新功能时候变得复杂

    2.项目模块越大,启动越慢,很小的改动也需要重新部署整个项目

    3.任何模块的漏洞,都会降低系统的可靠性

    4.如果想整体使用新的技术,新的框架,那是不可能的

  如果采用微服务,解决了单一系统的复杂性,主要有以下优点

    1.可采用敏捷开发模式,选择合适的技术

    2.每一个微服务是独立部署的,可以快速迭代部署

    3.一些需要负载均衡的服务可以使用ngix同一反向代理分发请求,这样不需要整个系统负载均衡了

微服务的缺点:

    1.微服务作为分布式系统时候带来了复杂性,当应用是整体应用时,模块之间可以内部调用,但微服务是多个独一的应用,调用起来增加了一定的复杂性

    2.多个数据库,事物的实现会头痛

    3.测试微服务变得复杂,当一个服务依赖于另一个服务时候,测试时需要另一个服务的支持

    4.整体系统只需要部署在一组相同的服务器上,而微服务需要更高的自动化形似

你可能感兴趣的:(微服务的必要性)