本文共 1917 字,大约阅读时间需要 6 分钟。
1、马丁福勒博客:https://martinfowler.com/articles/microservices.html
2、用来描述将软件应用程序设计为独立可部署服务套件的特定方法。虽然这种体系结构风格没有精确的定义,但是围绕着业务能力、自动部署、端点中的智能以及语言和数据的分散控制,围绕着组织有一些共同的特征
3、简而言之架构风格是一种将单个应用程序开发为一组小服务的方法,每个服务运行在自己的流程中,并且与轻量级机制(通常是HTTP资源API)通信。这些服务是围绕业务能力建立的,并且可以由完全自动化的部署机器独立部署。这些服务的集中管理只有最低限度,可以用不同的编程语言编写并使用不同的数据存储技术。
单个应用程序开发为一组小服务的方法
服务的集中管理只有最低限度
1、微服务就是将传统的一站式项目应用,来根据业务进行拆分成一个一个的服务,从而彻底的去掉耦合
2、那么每个微服务提供了单个业务功能的服务,说白就是一个服务一个事件
也就一个独立的处理过程,类似进程的概念,能够独立运行和销毁,甚至拥有自己的数据库
3、如下单就是下单,支付就是支付
1、强调的是服务的大小,关注的是某一个点,具体解决某个一个问题/落地的对应服务的一个服务应用.
2、如同医院中的眼科只做眼科的事,化验科只做化验科的事,换句话说,专业的事交给专业的来做
1、微服务架构是一种架构模式,他提倡将单位一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值.
2、每个服务运行在一个独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API的风格)。
3、每个服务都是围绕着具体业务进行构建,并且能够被独立的部署到生成环境、类生产环境等。
4、另外应当尽量避免统一的集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。
5、换句话说,比如医院中眼科/化验科/等就一个小的服务,而对外提供一个大的服务就是医院
1、每个服务足够内聚,够小,代码容易理解这样能够明确的指定一个业务功能或者是业务需求
2、一个微服务开发简单,开发效率高,因为一个微服务就是专一的只做一个事情
3、能够被小团队进行独立的开发
4、微服务是松偶合的,是有功能意义的服务,无论是开发阶段或者是在部署阶段都是独立的。
5、微服务可以使用不同的语言进行开发。
6、容易与第三方的技术进行集成,允许容易灵活的方式集成自动部署,通过持续集成工具进行集成如Jenkins Hudson 等...
7、微服务容易让开发人员理解,修改访问维护
8、微服务允许利用融合新的技术
9、微服务只专注业务逻辑的代码,不会和HTML/CSS等前台技术以及组件混合
如平常开发中的两种模式:
一种模式:
前后的分离模式
程序员只是专注后端的代码,和前端工程师安装约定的Rest地址+输入的参数格式+输出的参数格式、如$.post(rest,jsonDate,callBack)
二种模式:
全栈开发
H5+CSS+JAVAEE.....
10、每个微服务都有直接的存储的能力,可以拥有自己的数据库,也可以用拥有同一个数据库
1、开发人员要处理分布式系统的复杂性
2、多服务运维难度加大
3、系统部署依懒
4、服务器之间的通信成本加大
5、数据的一致性
6、系统的集成测试难度加大
7、性能的监控难度加大
1、就是多种技术的集合体
1、服务治理(如阿里巴巴的Dubbo)
2、服务的注册(如Apache_ZooKeeper)
3、服务的调用
4、服务的负载均衡_(Jenkins)
5、服务的监控
.........
6、如都是不同的公司的不同的技术
那么可不可以使用同一家个公司的技术来完成?可以使用SpringCloud
1、整体解决方法和框架的熟悉度
2、社区的热度
3、可维护性
4、学习的路线
1、阿里的Dubbo/HSF(分部式高速框架可理解二代Dubbo)俗称:好舒服
2、京东的JSF俗称:惊舒服
3、新浪微博Motan俗称:茅台
4、当当网Dubbox
筛选微服务的条件
1、看看是否满足微服务
2、如何满足(是否可以自理更生)
3、借用第三方的技术
转载地址:http://sdrma.baihongyu.com/