springCloud(1):微服务简介

一、什么是微服务

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。

二、微服务架构特性

1、每个微服务可独立运行在自己的进程里

2、一系列独立运行的微服务共同构建起整个系统

3、每个服务为独立的业务开发,一个微服务只关注某个特定的功能,如:订单管理

4、微服务之间通过一些轻量级的通信机制进行通信,例如:通过RESTful API进行调用

5、可以使用不同的语言与数据存储技术

6、全自动的部署机制

三、微服务的优点与挑战

3.1、优点

1、易于开发和维护

一个微服务只会关注一个特定的业务功能。

2、单个微服务启动较快

 单个微服务代码量较少

3、局部修改容易部署

 单体应用只要要修改就得重新部署整个应用,微服务解决了这一问题

4、技术栈不受限

 语言不受限制

5、按需伸缩

可根据需要,实现细粒度的扩展

3.2、挑战

1、运维成本较高

更多的服务意味着更多的运维投入

2、分布式固有的复杂性

使用微服务构建的是分布式系统,对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的挑战

3、接口调整成本高

微服务之间通过接口进行通信,如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整

4、重复劳动

很多服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度。

四、微服务设计原则

4.1、单一职责原则

指的是一个单元(类、方法或者服务等)只应关注整个系统功能中单独、有界限的一部分。(SOLID原则之一)

4.2、服务自治原则

指每个微服务应具备独立的业务能力 、依赖与运行环境。应该与其它服务高度解耦,每个微服务从开发、测试、构建、部署,都应当可以独立运行,而不应该依赖其它的服务

4.3、轻量级通信原则

轻量级的通信机制应具备两点:

 1、体量较轻

 2、跨语言

微服务架构中,常用的协议有REST、AMQP、STOMP、MQTT等

4.4、微服务粒度

微服务的粒度是难点,也常常是争论的焦点。应当使用合理的粒度划分微服务,而不是一味的把服务做小。

五、微服务架构的实现

不仅需要开发框架的支持,还需要一些自动化的部署工具,以及IaaS、PaaS或CaaS的支持。


开发框架的选择:

 可以使用Spring Cloud作为微服务开发框架。当然也可以使用Dubbo等

本文转自我爱大金子博客51CTO博客,原文链接http://blog.51cto.com/1754966750/1941022如需转载请自行联系原作者


我爱大金子

优秀的个人博客,低调大师

微信关注我们

转载内容版权归作者及来源网站所有!本站原创内容转载请注明来源!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。