微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信。每个微服务都在特定的界定上下文(每服务)中实现特定的端到端域和业务功能,并且必须由自动机制进行自主开发和独立部署。最后,每个服务都应该拥有自己的相关域数据模型和域逻辑,并能使用不同的数据存储技术(SQL 和非 SQL),对每个微服务使用不同的编程语言。

为什么要使用微服务? 一言以蔽之,就是因为灵活性。从长远来看,微服务能够将应用程序设计为基于许多可独立部署且能制定具体发布规划的服务,从而可以在复杂的可高度扩展大型系统中实现极高的可维护性。

微服务的另外一大优势是,可以独立扩展。您可以扩展特定的微服务,而无需一次性扩展庞大的应用程序块整体。这样一来,可以单独扩展需要更多处理能力或网络带宽以支撑需求的功能区域,而不用扩展应用程序中实际并不需要更多处理能力或网络带宽的其他区域。

通过构建精细的微服务应用程序,您可以持续集成和开发,并能加速在应用程序中实现新功能。通过精细分解应用程序,您还可以单独运行和测试微服务,并能在保持微服务之间的严格协定的同时独立发展微服务。只要您不破坏协定或接口,就可以在后台更改任何微服务实现,并能添加新功能,而不破坏其他依赖微服务。

使用微服务方法,根本宗旨就是借助灵活更改和快速迭代实现高效率,因为您可以更改复杂的可扩展大型应用程序的特定一小部分。

每个微服务的数据主权

这种方法遵循的一项重要规则是,每个微服务都必须拥有自己的域数据和逻辑(在自治生命周期内),且每个微服务都必须独立部署。这实际上与完整的应用程序拥有自己的逻辑和数据别无二致。

也就是说,使用此方法,域的概念模型因子系统或微服务而异。以企业应用程序为例,其中客户关系管理 (CRM) 应用程序、交易购买子系统和客户支持子系统各自调用唯一客户实体属性和数据,并采用不同的界定上下文。

此原则与 DDD 中的原则类似,即每个界定上下文(可与子系统/服务相比的模式)必须拥有自己的域模型(数据和逻辑)。每个 DDD 界定上下文均与不同的微服务相关联。

另一方面,许多应用程序中使用的传统(或整体)方法是对整个应用程序及其所有内部子系统使用一个集中数据库(通常是规范化 SQL 数据库),如 所示。这种方法起初看来比较简单,似乎能够在不同的子系统中重复使用实体,从而保持所有对象的一致性。但实际上,您最终会得到为许多不同的子系统提供服务的大型表格,其中包括大多数情况下并不需要的属性和列。相当于在进行短途徒步旅行、一天自驾游和学习地理知识时使用同一张自然地图。

微服务无状态还是有状态?

如前所述,每个微服务都必须拥有自己的域模型。对于无状态微服务,数据库是外部的,并采用 SQL Server 等关系数据库选项,或 MongoDB 等 NoSQL 选项。进一步探究发现,服务本身可以是有状态的,也就是说数据驻留在同一微服务中。此类数据不仅可以存在于同一服务器中,还可以存在于同一微服务进程中、内存中、硬盘驱动器中,并能复制到其他节点。

无状态是非常有效的方法,比有状态微服务更易于实现,因为无状态类似于传统的已知模式。不过,无状态微服务会导致进程和数据源之间出现延迟,同时还会在通过其他缓存和队列提高性能时呈现更多移动对象。结果就是,您最终会得到包含许多层级的复杂体系结构。

另一方面,有状态微服务在高级方案中脱颖而出,因为域逻辑和数据之间没有延迟。繁重的数据处理、游戏后端、数据库即服务和其他低延迟方案都受益于有状态服务,因为它能启用本地状态以提高访问速度。

缺点是, 有状态服务会增加复杂性,加大了扩展难度。对于跨有状态微服务副本的数据复制、数据分区等问题,必须实施通常在外部数据库边界内实现的功能。而这正是 Service Fabric 最有帮助的一个地方,即简化有状态微服务的开发和生命周期。

微服务方法的任何优点都伴随着缺点。如果您亲自操作,则会发现分布式计算和复杂的微服务部署很难管理。Service Fabric 提供了一种体系,方便您以卓有成效的方式创建、部署、运行和管理微服务。

什么是 Service Fabric? 它是一种分布式系统平台,用于构建面向云的可高度扩展且易于管理的可靠应用程序。Service Fabric 可应对开发和管理云应用程序的巨大挑战。通过使用 Service Fabric,开发者和管理员无需解决复杂的基础结构问题,只需专注于实现要求非常高的任务关键型工作负载即可,因为他们知道应用程序既可扩展,又可管理,而且还十分可靠。Service Fabric 代表 Microsoft 的下一代中间件平台,用于构建和管理这些企业级云扩展服务。

Service Fabric 是一种通用的部署环境;您可以部署基于任意语言(Microsoft .NET Framework、Node.js、Java 和 C++)或数据库运行时(如 MongoDB)的所有可执行文件。

学习Azure Service Fabric,首先需要搭建学习的环境,https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started/ 这是微软官方的入门文档,我们下面是在Win10/vs2015上的环境搭建。

构建和运行Azure Service Fabric应用程序,需要在开发机器上安装Service Fabric sdk和工具,也需要激活执行SDK里的PowerShell脚本。

安装运行时,SDK和开发工具,通过WPI 工具提供三个配置选项,我们选择 Install the Service Fabric runtime, SDK, and tools for Visual Studio 2015

安装完成后再Visual Studio 的 Cloud 下就有了Service Fabric 的应用程序模板

激活PowerShell 脚本执行

Service Fabric 使用PowerShell 脚本来创建本地开发集群和使用Visual Studio部署应用,Windows 默认并没有激活执行PowerShell脚本的执行,所以首先需要修改PowerShell的执行策略,使用管理员账号打开PowerShell ,执行下面的命令:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUse

r

Azure Service Fabric 开发环境搭建的更多相关文章

  1. Hyperledger Fabric 开发环境搭建 centos7系统

    一.安装GO语言 下载最新版的go 打开Terminal,输入命令(以下命令都是以root管理员的角色进行的) su 输入密码:***** wget https://storage.googleapi ...

  2. 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)

    目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...

  3. 人人都可以开发高可用高伸缩应用——论Azure Service Fabric的意义

    今天推荐的文章其实是微软的一篇官方公告,宣布其即将发布的一个支撑高可用高伸缩云服务的框架--Azure Service Fabric. 前两天,微软Azure平台的CTO Mark Russinovi ...

  4. Azure Service Fabric 踩坑日志

    近期项目上面用到了Azure Service Fabric这个服务,它是用来做微服务架构的,由于这套代码和架构都是以前同学留下来的,缺少文档,项目组在折腾时也曾遇到几个问题,这里整理如下,以供参考. ...

  5. Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建

    目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...

  6. Centos 基础开发环境搭建之Maven私服nexus

    hmaster 安装nexus及启动方式 /usr/local/nexus-2.6.3-01/bin ./nexus status Centos 基础开发环境搭建之Maven私服nexus . 软件  ...

  7. Spark Idea Maven 开发环境搭建

    一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3.3.3,安装过程,略. 编辑Maven安装目录conf/settings.x ...

  8. spring mvc4.1.6 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明

    一.准备工作 开始之前,先参考上一篇: struts2.3.24 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明 struts2.3 ...

  9. Struts2+Spring3+Mybatis3开发环境搭建

    本文主要介绍Struts2+Spring3+Mybatis3开发环境搭建 Struts和Spring不过多介绍. MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBa ...

随机推荐

  1. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  2. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  3. 关于全局ID,雪花(snowflake)算法的说明

    上次简单的说一下:http://www.cnblogs.com/dunitian/p/6041745.html#uid C#版本的国外朋友已经封装了,大家可以去看看:https://github.co ...

  4. ExtJS 4.2 Grid组件的单元格合并

    ExtJS 4.2 Grid组件本身并没有提供单元格合并功能,需要自己实现这个功能. 目录 1. 原理 2. 多列合并 3. 代码与在线演示 1. 原理 1.1 HTML代码分析 首先创建一个Grid ...

  5. css3制作旋转动画

    现在的css3真是强大,之前很多动画都是用jq来实现,但是css3制作的动画要比jq实现起来简单很多,今天呢,我自己也写了一个css旋转动画和大家分享.效果如下面的图片 思路:1.制作之前呢,我们先来 ...

  6. ios label 自动计算行高详解

    在OC当中自动计算行高主要调用系统的 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff } span ...

  7. Android之解析XML

    1.XML:可扩展标记语言. 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标记没有被预定义.需要自行定义标签. 它被设计为具有自我描述性. 是W3 ...

  8. mysql 行级锁的使用以及死锁的预防

    一.前言 mysql的InnoDB,支持事务和行级锁,可以使用行锁来处理用户提现等业务.使用mysql锁的时候有时候会出现死锁,要做好死锁的预防. 二.MySQL行级锁 行级锁又分共享锁和排他锁. 共 ...

  9. 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...

  10. MyBatis1:MyBatis入门

    MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...