微服务--架构实践,JAVA 和微软Power Apps(一)

Asp.net 微服务平台:

生成和演示地址:https://aspnetzero.com/Demo/CreateDemo

如下是Power Apps 的介绍:https://docs.microsoft.com/zh-cn/powerapps/guided-learning/get-started?tutorial-step=1

什么是 PowerApps?

PowerApps 包含一系列软件服务和应用,彻底改变自定义业务线应用程序的生成和共享方式,以便你可以快速生成和共享。

下面是抄的一个JAVA 微服务平台。

PowerApps 连接你已在使用的云服务和数据源,以便你可以利用已掌握的技能快速生成应用来满足特定需求。 可以跨 Web 、平板电脑和移动设备与同事快速共享应用。 PowerApps 还与 Microsoft Flow 集成,以便你可以在应用内触发工作流。 PowerApps 既简单易用,又能快速响应,可以在短短几分钟内生成应用,从而拉取 Excel 或云服务中的数据。 此外,PowerApps 还是可靠的企业级服务,能够满足跟踪整个企业内的资产和集成到后端系统等复杂需求。

PowerApps 组成部分

PowerApps 包含用于创建、共享和管理应用的组件,以及用于运行这些应用的组件。 可以使用应用所需的“数据连接”在“PowerApps Studio”中创建应用。 可以使用 web.powerapps.com 配置和管理数据连接和本地网关,并与 Common Data Service for Apps 结合使用。 创建应用后,通常会将其共享到 Microsoft AppSource,并在管理中心内管理应用。

可以在浏览器中使用 Microsoft Dynamics 365 运行应用,也可以使用适用于 Windows、iOS 和 Android 设备的 PowerApps Mobile 运行应用。

PowerApps 引导式课程的剩余部分将按创建、共享、管理和运行应用这一流程进行介绍。

PowerApps 如何匹配角色

借助 PowerApps,业务分析师和其他行业专家可以轻松利用已掌握的技能创建应用。 不过,PowerApps 用户类型并不仅限于此。 一些人只是运行其他人创建的应用。 另一些人(即以编写代码为生的专业开发者)利用 PowerApps 快速生成复杂的应用。

如何使用 PowerApps 可能取决于你在项目或团队中的角色,而你的角色可能会发生变化。 例如,你的一个同事创建了一个应用,已集成到全公司的客户关系管理 (CRM) 系统中,你经常使用此应用来跟踪潜在销售客户。 不过,你也可以自己编写应用,并与工作组共享你的应用,因为关系亲密的同事认为你的这些应用很有用。

PowerApps 组成部分

PowerApps 组成部分包括:

  • web.powerapps.com - 管理和共享生成的应用
  • PowerApps Studio - 使用易用的可视化工具生成功能强大的应用
  • PowerApps Mobile - 在 Windows、iOS 和 Android 设备上运行应用
  • PowerApps 管理中心 - 管理 PowerApps 环境和其他组成部分
  • Common Data Service for Apps - 使用通用数据模型集成业务数据

我们并不希望你花大量时间就学习了 PowerApps 概念,我们认为学习更充实的课程对你更有帮助。

web.powerapps.com

如果生成应用,大部分时间都是在这里执行操作。 可以查看其中提供的示例应用和模板,以及你创建的所有应用。可以在“PowerApps Studio”中创建应用,然后与个人和组织共享这些应用。 可以管理数据:连接网关实体(很快就会逐一介绍)。可以查看在 flows.microsoft.com 中创建的全部,并能将流与应用集成。

web.powerapps.com 网站

PowerApps Studio

PowerApps Studio 是能在任何新式浏览器中使用的 Web 应用程序。 PowerApps Studio 有三个窗格和一个功能区,创建应用类似于在 PowerPoint 中创建幻灯片组

  1. 左侧导航栏:可以显示应用中每个屏幕的缩略图或每个屏幕上所有控件的分层视图
  2. 中间窗格:显示正在处理的屏幕
  3. 右侧窗格:包含“布局”和“数据源”等设置选项
  4. 属性下拉列表:可在其中选择公式适用的属性
  5. 编辑栏:可在其中添加定义应用行为的公式(就像在 Excel 中一样)
  6. 功能区:可在其中添加控件并自定义设计元素

PowerApps Studio

PowerApps Mobile

适用于 Windows、iOS 和 Android 的 PowerApps Mobile 提供了一个环境,方便你查找和使用应用。 无需单独转到应用商店,不离开 PowerApps 就可以访问你自己创建的所有应用以及其他人与你共享的所有应用。 在 PowerApps Mobile 中使用应用时,可充分利用设备的功能,如相机控件、GPS 定位等。

PowerApps Mobile

管理中心

PowerApps 管理中心是为组织集中管理 PowerApps 的位置。 在这里,可以定义不同的环境,其中包含应用、数据连接和其他元素。 还可以在管理中心内创建 Common Data Service 数据库,并管理权限和数据策略。

PowerApps 管理中心

Microsoft Common Data Service for Apps

Common Data Service for Apps 可以轻松集成多个数据源的业务数据。 此服务采用一种通用数据模型,包含应用和业务流程通用的许多实体。 此服务可靠地存储可扩展的数据,让数据可供多个应用程序使用。 可以是在 PowerApps、Dynamics 365、其他 Microsoft 应用程序或第三方应用程序中生成的应用程序。 下图展示了 web.powerapps.com 中实体的一部分。

PowerApps“联系人”实体

一、微服务架构图:

二、技术介绍:(技术选型随着代码的编写会完成)

关于技术选型,我盗了一张我老大的微服务技术栈的图,如下:原文:http://www.jianshu.com/p/2da6becfb019

 我将会用到上图中的如下技术

  • 服务注册和服务发现:consul
  • 服务健康检查:consul
  • 配置管理:consul、archaius
  • 集群容错:hystrix
  • 计数监控:codahale-metrics、java-statsd-client、hystrix-dashboard、turbine、statsd、graphite、grafana
  • 服务路由:ribbon
  • 服务通信:retrofit、AsyncHttpClient(不选择okhttp,是因为okhttp性能比较差)
  • 文档输出:swagger
  • 日志统计:logback+ELK
  • 简化代码:lombok
  • 消息队列:rabbitmq
  • 分布式锁:redis实现和consul实现
  • 本地缓存:guava cache
  • 链路跟踪:zipkin、brave
  • 基本技术:springboot
  • 安全鉴权:auth2、openId connect
  • 自动化构建与部署:gitlab + jenkins + docker + k8s

三、基本流程:

  1. 各个服务启动的时候,都会将自己的信息注册到consulClient,consulClient将注册信息提交给consulServer,consulServer将信息提交给consulLeader(也是consulServer),consulLeader将自身的数据复制给其他的consulServer,服务注册完成!!!
  2. APP发出一个对gatewayX-server的request,该请求先到nginx,nginx选出一台gatewayX-server的服务器进行request的处理
  3. gatewayX-server通过myserviceA-client.jar来访问myserviceA-server的具体逻辑
    1. 首先从consulServer上拉取可用的myserviceA-server的服务器,服务发现完成!!!
    2. 根据负载均衡策略选出其中一个服务器来进行访问
    3. 访问的过程中通过熔断器来进行超时容错处理
  4. gatewayX-server通过myserviceB-client.jar来访问myserviceB-server的具体逻辑同3

说明:如果仅仅只是前边这样的流程或者以前边这样的流程为基础并且myserviceB-server要调用myserviceA-server,那么上图中的myserviceB-server中的整个myserviceA-client.jar可以去掉,原因是gatewayX-server已经引入了myserviceA-client.jar。

如果不是上边的流程,只是单纯的myserviceB-server要访问myserviceA-server,那么需要引入myserviceA-client.jar。

注意:对于服务发现而言,consulServer会通过gossip协议将服务器数据广播给各个本地consul agent(通常是consulClient),所以我们不需要做本地缓存,当被调用服务的服务器列表发生改变时,会马上广播给consulClient。

在后续的代码编写过程中,会逐步通过java语言实现一个微服务的整体架构代码。

猜你喜欢

转载自blog.csdn.net/jason_dct/article/details/81029070