清除过滤器
公告
Claire Zheng · 八月 1, 2023
嗨,开发者们!
我们很高兴邀请您参加Idea-A-Thon创意马拉松,展示与 InterSystems 技术相关的好创意:
🎁第二届 InterSystems Idea-A-Thon创意马拉松🎁
在8 月 1 日至8 月 21 日期间,根据本次创意马拉松的主题发布创意,即可获得即可获得创意达成奖。
最重要的是,此次赛事InterSystems的员工和社区成员都可以参与!
主题
💡使用 InterSystems IRIS 快速、安全、绿色地运行解决方案💡
该主题基于2023 年 InterSystems 全球峰会期间@Jeffrey Fried的演示而来: InterSystems IRIS 最新动态、下一步计划
如果您的创意得到实施,将提高基于 InterSystems IRIS 的解决方案的速度和可靠性,并减少碳足迹——本次Idea-A-Thon创意马拉松就是为这些好创意而来。
您的创意需要有助于:
提高解决方案的性能
减少实施所需的硬件资源
减少开发、测试、实施、用户培训的工作日
以及与Idea-A-Thon创意马拉松主题相关的其他想法。
👉 要参加我们的Idea-A-Thon创意马拉松,请在InterSystems Ideas 门户上提交创意。
合格的参赛创意应符合以下要求:
用户在Idea-A-Thon创意马拉松期间提交,由通过InterSystems Ideas网站注册的用户创建(您可以通过InterSystems SSO登录);
不要成为其他已经存在的想法的一部分——只允许提交新创意;
不要描述InterSystems产品或服务的现有功能;
除标题外,还包含对创意的详细描述以及对为什么该创意适合 Idea-A-Thon 主题,阐释需清晰明了,包含3~5句话;
以英文发布;
InterSystems 专家认为该创意有意义。
所有想法都将受到审核。我们可能会要求您更详细地阐释您的创意。
符合要求的创意将获得特殊的“创意马拉松(Idea-A-Thon)”状态标记。
谁可以参加?
我们邀请所有人加入我们的创意马拉松。欢迎InterSystems员工和社区成员参与并提交创意。
奖品
1. 参与奖——所有发布合格创意的参与者都会将获得奖励
🎁 无线充电鼠标垫
2. 专家奖 ——InterSystems 专家将评选出 3 个最佳创意。获胜者将获得:
第一名- 🎁 Apple Watch SE / Fairphone Fairbuds XL 耳机
第二名- 🎁 扬声器套装 JBL Pulse 5 / Apple AirPods Pro 第二代 / 乐高星球大战 R2-D2
第三名- 🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2
3. 社区奖——得票最多的创意将获得:
🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2
注:InterSystems员工只能获得参与奖。专家奖和社区奖只会颁发给社区非 InterSystems 成员。
参赛时间
⚠️ 创意提交:8 月 1 日至 21 日
✅ 创意投票:8 月 1 日至 27 日
🎉 公布获奖者:8 月 28 日
我们鼓励您在此期间登录创意门户上分享您的想法。注册会员可以对已发布的创意进行投票、发表评论。
注意:社区奖仅计入在开发者社区发表过至少一篇帖子的活跃社区用户的投票。
所以,
来 InterSystems Ideas 门户上发布您的创意吧,并随时关注您创意的状态更新:
>>在此提交您的创意<<
Important note: All prizes are subject to availability and shipping options. Some items may not be available for international shipping to specific countries, in this case, an equivalent alternative will be provided. We will let you know if a prize is not available and offer a possible replacement. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries.
重要提示:所有奖品均视供应情况和运输情况而定。有些奖品可能无法通过国际航运到特定国家,在这种情况下,我们将提供等效的替代方案。如果没有奖品,我们会通知您,并提供备选的替代奖品。奖品不能寄给克里米亚、俄罗斯、白俄罗斯、伊朗、朝鲜、叙利亚或其他美国禁运国家的居民。
公告
Claire Zheng · 七月 29
InterSystems IRIS 2025.2 引入了 IRISSECURITY 数据库,用于存储安全数据。 与之前用于存储安全数据的数据库 IRISSYS 不同,IRISSECURITY 支持加密,可以保护静态敏感数据。 在今后的版本中,IRISSECURITY 将可实现镜像。
此版本还引入了可以执行常规安全管理任务的 %SecurityAdministrator 角色。
本文中介绍的更改将影响持续交付 (CD) 和扩展维护 (EM) 版本通道。 也就是说,从版本 2025.2(CD,于 2025 年 7 月 23 日发布)和 2026.1 (EM) 开始,InterSystems IRIS 将包含 IRISSECURITY 数据库,并且在升级时,所有安全数据会自动从 IRISSYS 迁移到 IRISSECURITY。
虽然 InterSystems IRIS 2025.2 预计于 2025 年 7 月 23 日发布,但我们暂缓了 InterSystems IRIS for Health 和 HealthShare Health Connect 2025.2 的公开发布,原因是我们正在着手完成针对已知镜像问题的修复计划,该问题会影响 OAuth 配置数据。
升级须知
IRISSECURITY 对用户与安全数据的交互方式做出了多处可能导致功能中断的更改:
用户无法再直接访问安全global,而必须使用各种安全类提供的 API。
OAuth2 Global无法再映射到其他数据库。
用户无法再随意查询安全表,即使在 SQL 安全已禁用的情况下也是如此。
系统数据库现在使用的预定义资源无法更改。 在 Unix 上,如果为之前版本的系统数据库创建并指定了新资源,在升级时,该新资源将被预定义资源替代(但如果有任何角色引用了非默认资源,则必须手动将其更改为使用默认资源,以保持数据库访问权限)。 在 Windows 上,必须将资源更改回默认资源。 如果您尝试在 Windows 上升级,而数据库具有非默认资源,升级将停止(实例不会修改),并会显示错误消息“Database must have a resource label of…”
以下各部分将详细介绍这些更改,以及在您依赖原始行为的情况下应采取的替代措施,但总体而言,在您进行升级之前,应当验证并测试您的应用程序和宏:
使用提供的安全 API 管理安全功能(而非直接访问global)。
拥有使用这些 API 所必需的权限(%DB_IRISSYS:R 和 Admin_Secure:U)。
Global 访问
之前,当安全global存储在 IRISSYS 数据库中时,用户可以通过以下权限访问安全数据:
%DB_IRISSYS:R:直接读取和通过安全 API 读取安全global。
%DB_IRISSYS:RW:读取和写入安全global。
%DB_IRISSYS:RW 和 Admin_Secure:U:通过安全 API 管理安全功能。
在 InterSystems IRIS 2025.2 中:
用户无法再直接访问安全global。
%DB_IRISSYS:R 和 %Admin_Secure:U 这两个权限是访问安全数据(通过提供的安全 API)以及通过各种安全类管理安全功能所需的最低权限。
对于常规安全管理,您可以使用新的 %SecurityAdministrator 角色。
已移除对安全数据的只读访问权限(之前可以通过 %DB_IRISSYS:R 实现)。
Global 存储位置
在 InterSystems IRIS 2025.2 中,以下安全global已从 IRISSYS 迁移到 IRISSECURITY 中的 ^SECURITY:
^SYS("SECURITY")
^OAuth2.*
^PKI.*
^SYS.TokenAuthD
下表列出了已迁移的最关键的global及其安全类、原存储位置和新存储位置:
安全类
原存储位置 (IRISSYS)
新存储位置 (IRISSECURITY)
不适用
^SYS("Security","Version")
^SECURITY("Version")
Security.Applications
^SYS("Security","ApplicationsD")
^SECURITY("ApplicationsD")
Security.DocDBs
^SYS("Security","DocDBsD")
^SECURITY("DocDBsD")
Security.Events
^SYS("Security","EventsD")
^SECURITY("EventsD")
Security.LDAPConfigs
^SYS("Security","LDAPConfigsD")
^SECURITY("LDAPConfigsD")
Security.KMIPServers
^SYS("Security","KMIPServerD")
^SECURITY("KMIPServerD")
Security.Resources
^SYS("Security","ResourcesD")
^SECURITY("ResourcesD")
Security.Roles
^SYS("Security","RolesD")
^SECURITY("RolesD")
Security.Services
^SYS("Security","ServicesD")
^SECURITY("ServicesD")
Security.SSLConfigs
^SYS("Security","SSLConfigsD")
^SECURITY("SSLConfigsD")
Security.System
^SYS("Security","SystemD")
^SECURITY("SystemD")
Security.Users
^SYS("Security","UsersD")
^SECURITY("UsersD")
%SYS.PhoneProviders
^SYS("Security","PhoneProvidersD")
^SECURITY("PhoneProvidersD ")
%SYS.X509Credentials
^SYS("Security","X509CredentialsD")
^SECURITY("X509CredentialsD ")
%SYS.OpenAIM.IdentityServices
^SYS("Security","OpenAIMIdentityServersD")
^SECURITY("OpenAIMIdentityServersD")
OAuth2.AccessToken
^OAuth2. AccessTokenD
^SECURITY("OAuth2.AccessToken ")
OAuth2.Client
^OAuth2.ClientD
^SECURITY("OAuth2.Client")
OAuth2.ServerDefinition
^OAuth2.ServerDefinitionD
^SECURITY("OAuth2.ServerDefinitionD")
OAuth2.Client.MetaData
^OAuth2.Client.MetaDataD
^SECURITY("OAuth2.Client.MetaDataD")
OAuth2.Server.AccessToken
^OAuth2.Server.AccessTokenD
^SECURITY("OAuth2.Server.AccessTokenD")
OAuth2.Server.Client
^OAuth2.Server.ClientD
^SECURITY("OAuth2.Server.ClientD")
OAuth2.Server.Configuration
^OAuth2.Server.ConfigurationD
^SECURITY("OAuth2.Server.ConfigurationD")
OAuth2.Server.JWTid
^OAuth2.Server.JWTidD
^SECURITY("OAuth2.Server.JWTidD")
OAuth2.Server.Metadata
^OAuth2.Server.MetadataD
^SECURITY("OAuth2.Server.MetadataD")
PKI.CAClient
^PKI.CAClientD
^SECURITY("PKI.CAClient")
PKI.CAServer
^PKI.CAServerD
^SECURITY("PKI.CAServer")
PKI.Certificate
^PKI.CertificateD
^SECURITY("PKI.Certificate")
%SYS.TokenAuth
^SYS.TokenAuthD
^SECURITY("TokenAuthD")
OAuth2 Global 映射
之前,可以将 OAuth2 Global映射到其他数据库,从而可以镜像 OAuth2 配置。
在 InterSystems IRIS 2025.2 中,无法再映射 OAuth2 global,且不能镜像 IRISSECURITY。 如果您过去依赖此行为进行镜像,可以使用以下任何替代方法:
手动对主节点和故障转移节点进行更改。
从主节点导出设置,然后将其导入到故障转移节点(需要 % ALL 权限)。
导出 OAuth2 配置数据:
set items = $name(^|"^^:ds:IRISSECURITY"|SECURITY("OAuth2"))_".gbl"
set filename = "/home/oauth2data.gbl"
do $SYSTEM.OBJ.Export(items,filename)
导入 OAuth2 配置数据:
do $SYSTEM.OBJ.Import(filename)
SQL 安全
之前,SQL 安全由 CPF 参数 DBMSSecurity 控制。 当 DBMSSecurity 禁用时,拥有 SQL 权限的用户可以随意查询数据库中的所有表。
在 InterSystems IRIS 2025.2 中:
DBMSSecurity CPF 参数已被替换为系统范围的 SQL 安全属性。 可以通过多种方式对此进行设置:
管理门户:System Administration > Security > System Security > System-wide Security Parameters > Enable SQL security(系统管理 > 安全 > 系统安全 > 系统范围的安全参数 > 启用 SQL 安全)
SetOption: ##class(%SYSTEM.SQL.Util).SetOption("SQLSecurity", "1")
Security.System.Modify: ##Class(Security.System).Modify(,.properties),其中,properties 为 properties("SQLSecurity")=1
安全表(security table)现只能通过 Detail 和 List API 进行查询,即使在 SQL 安全处于禁用状态的情况下,也需要同时具有 %DB_IRISSYS:R 和 %Admin_Secure:U 权限才能进行查询。
例如,要获取角色列表,无法再直接查询 Security.Roles 表, 而应使用 Security.Roles_List() 查询:
SELECT Name, Description FROM Security.Roles_List()
加密 IRISSECURITY
要加密 IRISSECURITY,请按以下步骤操作:
创建新的加密密钥。 转到 System Administration > Encryption > Create New Encryption Key File(系统管理 > 加密 > 创建新的加密密钥文件),并指定以下设置:
Key File(密钥文件)– 加密密钥的名称。
Administrator Name(管理员名称)– 管理员的名称。
Password(密码)– 密钥文件的密码。
激活加密密钥。 转到 System Administration > Encryption > Database Encryption(系统管理 > 加密 > 数据库加密),并选择 Activate Key(激活密钥),指定第 1 步中的 Key File(密钥文件)、Administrator Name(管理员名称)和 Password(密码)。
转到 System Administration > Encryption > Database Encryption(系统管理 > 加密 > 数据库加密),并选择 Configure Startup Settings(配置启动设置)。
从 Key Activation at Startup(启动时的密钥激活)下拉菜单中选择一种密钥激活方法。 InterSystems 强烈建议选择 Interactive(交互式)密钥激活。
在 Encrypt IRISSECURITY Database(加密 IRISSECURITY 数据库)下拉列表中,选择 Yes(是)。
重新启动系统,以加密 IRISSECURITY。
百分比类(那些类名以%开头的类,可以在任何命名空间访问)访问规则
在之前版本的 InterSystems IRIS 中,管理 Web 应用程序对附加百分比类的访问权限的过程涉及到对安全global进行写入操作。 在 InterSystems IRIS 2025.2 中,可以通过管理门户或 ^SECURITY 例程完成此过程。
管理门户(Management Portal)
通过管理门户创建百分比类访问规则:
转到 System Administration > Security > Web Applications(系统管理 > 安全 > Web 应用程序)。
选择您的 Web 应用程序。
在 Percent Class Access(百分比类访问)选项卡中设置以下选项:
Type(类型):控制该规则是仅适用于应用程序对指定百分比类的访问 (AllowClass),还是适用于包含指定前缀的所有类 (AllowPrefix)。
Class name(类名称):允许应用程序访问的百分比类或前缀。
Allow access(允许访问):是否允许应用程序访问指定的百分比类或软件包。
Add this same access to ALL applications(为所有应用程序添加相同的访问权限):是否为所有应用程序应用此规则。
^SECURITY
通过 ^SECURITY 例程创建类访问规则:
在 %SYS 命名空间中,运行 ^SECURITY 例程:
DO ^SECURITY
选择选项 5, 1, 8, 和 1,以输入类访问规则提示。
按照提示指定以下内容:
Application?(应用程序?)– 应用程序名称。
Allow type?(允许类型?)– 该规则是适用于应用程序访问特定类 (AllowClass) 还是访问包含指定前缀的所有类 (AllowPrefix)。
Class or package name?(类或软件包名称?)– 允许应用程序访问的类或前缀。
Allow access?(允许访问?)– 是否允许应用程序访问指定类或软件包。
公告
Michael Lei · 一月 3
InterSystems IRIS® 数据平台、InterSystems IRIS® for Health 和 HealthShare® Health Connect 2025.1 的首个开发者预览版已发布到 WRC 开发者预览网站。容器可在我们的容器注册表中找到,并已添加 latest-preview 标签。
这些开发者预览版包含用于迁移到 IBM Open XL C/C++ for AIX 17.x 编译器的功能,从而在旧版编译器接近支持终止时确保与未来的 AIX 版本兼容。 此迁移侧重于 aixopenssl30 目标,支持 AIX 7.2 和 7.3 上的 SSL3。
可以在以下链接中找到初始文档:
InterSystems IRIS 数据平台 2025.1 | 文档首页
HealthShare Health Connect 2025.1 | 文档首页
可用性和软件包信息
此版本提供适用于所有受支持平台的经典安装包。有关完整列表,请参阅“支持的平台”文档。
安装包和预览版密钥可从 WRC 的预览版下载网站或通过评估服务网站(勾选“Show Preview Software”(显示预览软件)框)获取。
文章
Claire Zheng · 九月 13, 2021
针对新近面向中国推出的InterSystems IRIS医疗版互联互通套件,InterSystems将在9月17日(本周五)举办“InterSystems IRIS医疗版互联互通套件”线上发布会,会议详情如下,欢迎点击“此处”或扫描下方二维码报名。此次会议为邀请参会制,收到您的报名信息后,我们会及时与您确认参会资格并发送会议链接。
公告
Claire Zheng · 十月 23, 2021
亲爱的开发者们,
是否准备参加InterSystems 2021全球峰会呢?不要错过InterSystems Developer Community、Open Exchange和Global Masters的专题会议!
⚡️ "Win. Win. Win with InterSystems Developer Ecosystem" VSummit21 session ⚡️
🎁 注意:所有参会者都将获得额外奖励哦~
分享嘉宾:🗣 @Anastasia.Dyubaylo, InterSystems开发者社区经理 🗣 @Lena.Evsikova, Product Owner of InterSystems Open Exchange🗣 @Olga.Zavrazhnova2637, Customer Advocacy Manager, InterSystems
了解如何更好地使用 InterSystems 开发者社区、Global Masters (游戏化中心)和Open Exchange(应用程序库)。
兴趣: 开发经验,InterSystems IRIS,用户社区
论坛从10月27日起即可观看!(中国用户需注册观看)
来吧!
加入我们的会议,享受InterSystems技术和我们为开发者提供的生态系统的完整体验!
文章
Qiao Peng · 一月 14, 2021
你好,开发者!
你们中的许多人在 [Open Exchange](https://openexchange.intersystems.com/) 和 Github 上发布了 InterSystems ObjectScript 库。
但对于开发者来说,如何简化项目的使用和协作呢?
在本文中,我想介绍一种简单方法,只需将一组标准文件复制到你的仓库中,就可以启动任何 ObjectScript 项目和对其做出贡献。
我们开始吧!
**TLDR** - 将以下文件从[该仓库](https://github.com/intersystems-community/objectscript-docker-template)复制到你的仓库:
[Dockerfile](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Dockerfile)
[docker-compose.yml](https://github.com/intersystems-community/objectscript-docker-template/blob/master/docker-compose.yml)
[Installer.cls](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Installer.cls)
[iris.script](https://github.com/intersystems-community/objectscript-docker-template/blob/master/iris.script)
[settings.json](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.vscode/settings.json "settings.json"){#9f423fcac90bf80939d78b509e9c2dd2-d165a4a3719c56158cd42a4899e791c99338ce73}
[.dockerignore](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.dockerignore ".dockerignore"){#f7c5b4068637e2def526f9bbc7200c4e-c292b730421792d809e51f096c25eb859f53b637}
[.gitattributes](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.gitattributes ".gitattributes"){#fc723d30b02a4cca7a534518111c1a66-051218936162e5338d54836895e0b651e57973e1}
[.gitignore](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.gitignore ".gitignore"){#a084b794bc0759e7a6b77810e01874f2-e6aff5167df2097c253736b40468e7b21e577eeb}
你已经知道启动你的项目和协作的标准方式。 以下将详细说明这样做的步骤和原因。
**注意:**在本文中,我们将考虑可在 InterSystems IRIS 2019.1 及更新版本上运行的项目。
**选择 InterSystems IRIS 项目的启动环境**
通常,我们希望开发者尝试项目/库,并确保这是快速安全的练习。
在我看来,快速安全地启动任何新项目的理想方式是 Docker 容器,它可以保证开发者启动、导入、编译和计算任何内容对于主机来说都是安全的,并且不会破坏任何系统或代码。如果出了问题,只需停止并删除容器即可。 如果应用程序占用大量磁盘空间,使用容器将其擦除,空间就回来了。 如果某个应用程序破坏了数据库配置,只需删除配置被破坏的容器。 简单又安全。
Docker 容器提供安全和标准化。
运行通用 InterSystems IRIS Docker 容器的最简单方法是运行 [IRIS 社区版映像](https://hub.docker.com/_/intersystems-iris-data-platform/plans/222f869e-567c-4928-b572-eb6a29706fbd?tab=instructions):
1. 安装 [Docker desktop](https://www.docker.com/products/docker-desktop)
2. 在操作系统终端中运行以下命令:
docker run --rm -p 52773:52773 --init --name my-iris store/intersystems/iris-community:2020.1.0.199.0
3. 然后在主机浏览器上打开管理门户:
4. 或者打开终端启动 IRIS:
docker exec -it my-iris iris session IRIS
5. 不需要 IRIS 容器时,将其停止:
docker stop my-iris
好! 我们在一个 docker 容器中运行 IRIS。 但是你希望开发者将你的代码安装到 IRIS 中,可能还要进行一些设置。 这就是我们下面要讨论的。
**导入 ObjectScript 文件**
最简单的 InterSystems ObjectScript 项目可以包含一组 ObjectScript 文件,例如类、例程、宏和global。 请查看有关命名和建议的文件夹结构的文章。
问题是如何将所有这些代码导入 IRIS 容器?
此时我们可以借助 Dockerfile 来获取通用 IRIS 容器,并将某个仓库中的所有代码导入 IRIS,然后根据需要对 IRIS 进行一些设置。 我们需要在仓库中添加一个 Dockerfile。
我们来看一下 [ObjectScript 模板](https://github.com/intersystems-community/objectscript-docker-template)仓库中的 [Dockerfile](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Dockerfile):
ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-community
ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0
ARG IMAGE=store/intersystems/iris-community:2019.4.0.379.0
ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0
FROM $IMAGE
USER root
WORKDIR /opt/irisapp
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp
USER irisowner
COPY Installer.cls .
COPY src src
COPY iris.script /tmp/iris.script # run iris and initial
RUN iris start IRIS \
&& iris session IRIS < /tmp/iris.script
前几个 ARG 行设置 $IMAGE 变量,随后在 FROM 中使用该变量。 这适合在不同的 IRIS 版本中测试/运行代码,只需在 FROM 前面的最后一行中更改 $IMAGE 变量即可切换版本。
这里我们采用:
ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0
FROM $IMAGE
这意味着我们将使用 IRIS 2020 社区版 build 199。
我们想要导入仓库中的代码,这意味着我们需要将仓库中的文件复制到 docker 容器。 下面几行完成此操作:
USER root
WORKDIR /opt/irisapp
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp
USER irisowner
COPY Installer.cls .
COPY src src
USER root - 这里我们将用户切换为 root,以在 docker 中创建文件夹和复制文件。
WORKDIR /opt/irisapp - 我们在此行中设置将文件复制到的工作目录。
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp - 这里我们为运行 IRIS 的 irisowner 用户和组授予权限。
USER irisowner - 将用户从 root 切换到 irisowner
COPY Installer.cls . - 将 [Installer.cls](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Installer.cls) 复制到工作目录的根目录。 不要漏了那个点儿。
COPY src src - 将[仓库的 src 文件夹](https://github.com/intersystems-community/objectscript-docker-template/tree/master/src/)中的源文件复制到 docker 上的工作目录的 src 文件夹中。
在下一个块中,我们运行初始脚本,其中将调用安装程序和 ObjectScript 代码:
COPY iris.script /tmp/iris.script # run iris and initial
RUN iris start IRIS \
&& iris session IRIS < /tmp/iris.script
COPY iris.script / - 我们将 iris.script 复制到根目录。 它包含我们要调用以设置容器的 ObjectScript。
RUN iris start IRIS\ - 启动 IRIS
&& iris session IRIS < /tmp/iris.script - 启动 IRIS 终端并在其中输入初始 ObjectScript。
很好! 我们有 Dockerfile,它将文件导入 docker。 但还有两个文件:installer.cls 和 iris.script。我们来检查一下。
[**Installer.cls**](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Installer.cls)
Class App.Installer
{
XData setup
{
}
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]
{
#; Let XGL document generate code for this method.
Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup")
}
}
坦白说,我们不需要 Installer.cls 就可以导入文件。 这只需要一行就能完成。 但除了导入代码之外,我们经常还需要设置 CSP 应用,引入安全设置,创建数据库和命名空间。
在此 Installer.cls 中,我们创建了名为 IRISAPP 的新数据库和命名空间,并为该命名空间创建了默认的 /csp/irisapp 应用程序。
所有这些都在元素中 执行:
<Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="no">
<Configuration>
<Database Name="${Namespace}" Dir="/opt/${app}/data" Create="yes" Resource="%DB_${Namespace}"/>
<Import File="${SourceDir}" Flags="ck" Recurse="1"/>
</Configuration>
<CSPApplication Url="/csp/${app}" Directory="${cspdir}${app}" ServeFiles="1" Recurse="1" MatchRoles=":%DB_${Namespace}" AuthenticationMethods="32"
/>
</Namespace>
我们用 Import 标签导入 SourceDir 中的所有文件:
<Import File="${SourceDir}" Flags="ck" Recurse="1"/>
这里的 SourceDir 是一个变量,设置为当前目录/src 文件夹:
<Default Name="SourceDir" Value="#{$system.Process.CurrentDirectory()}src"/>
有了带这些设置的 Installer.cls,我们可以自信地创建一个干净的新数据库 IRISAPP,我们将从 src 文件夹导入任意 ObjectScript 代码到该数据库中。
[iris.script](https://github.com/intersystems-community/objectscript-docker-template/blob/master/iris.script)
欢迎在这里提供任何所需的初始 ObjectScript 设置代码来启动 IRIS 容器。
例如, 我们加载并运行 installer.cls,然后让 UserPasswords 永远有效,以避免第一次启动时出现密码更改请求,因为开发不需要这个提示。
; run installer to create namespace
do $SYSTEM.OBJ.Load("/opt/irisapp/Installer.cls", "ck")
set sc = ##class(App.Installer).setup() zn "%SYS"
Do ##class(Security.Users).UnExpireUserPasswords("*") ; call your initial methods here
halt
[docker-compose.yml](https://github.com/intersystems-community/objectscript-docker-template/blob/master/docker-compose.yml)
为什么需要 docker-compose.yml,不能只用 Dockerfile 构建和运行映像吗? 可以的。 但 docker-compose.yml 能让生活更轻松。
通常,docker-compose.yml 用于启动连接到一个网络的多个 docker 映像。
当启动一个 docker 映像需要处理多个参数时,也可以使用 docker-compose.yml 来简化过程。 你可以使用它向 docker 传递参数,例如端口映射、卷、VSCode 连接参数。
version: '3.6'
services:
iris:
build:
context: .
dockerfile: Dockerfile
restart: always
ports:
- 51773
- 52773
- 53773
volumes:
- ~/iris.key:/usr/irissys/mgr/iris.key
- ./:/irisdev/app
这里我们声明服务 iris,它使用 docker 文件 Dockerfile,并开放 IRIS 的以下端口:51773、52773、53773。 此服务还映射两个卷:将主机主目录中的 iris.key 映射到期望的 IRIS 文件夹,以及将源代码的根文件夹映射到 /irisdev/app 文件夹。
Docker-compose 提供了更短的统一命令来构建和运行映像,无论你在 docker compose 中设置了什么参数。
总之,构建和启动镜像的命令是:
$ docker-compose up -d
要打开 IRIS 终端:
$ docker-compose exec iris iris session iris
Node: 05a09e256d6b, Instance: IRIS
USER>
此外,docker-compose.yml 有助于设置 VSCode ObjectScript 插件的连接。
[.vscode/settings.json](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.vscode/settings.json)
与 ObjectScript 加载项连接设置有关的部分如下:
{
"objectscript.conn" :{
"ns": "IRISAPP",
"active": true,
"docker-compose": {
"service": "iris",
"internalPort": 52773
}
}
}
在这里,我们看到的设置与 VSCode ObjectScript 插件的默认设置不同。
我们想要连接到 IRISAPP 命名空间(我们用 Installer.cls 创建的):
"ns": "IRISAPP",
一个 docker-compose 设置指示,docker-compose 文件在服务“iris”内,VSCode 将连接到 52773 映射到的端口:
"docker-compose": {
"service": "iris",
"internalPort": 52773
}
如果我们检查一下 52773 的相关设置,我们会看到没有为 52773 定义映射端口:
ports:
- 51773
- 52773
- 53773
这意味着将使用主机上的随机可用端口,并且 VSCode 将通过随机端口自动连接到 docker 上的 IRIS。
**这是一个非常方便的功能,因为它允许在随机端口上运行任意数量的带 IRIS 的 docker 映像,并让 VSCode 自动连接到它们。**
其他文件呢?
我们还有:
[.dockerignore](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.dockerignore) - 该文件可用于过滤你不想复制到所构建的 docker 映像中的主机文件。 通常 .git 和 .DS_Store 是必须有的行。
[.gitattributes](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.gitattributes) - git 的属性,用于统一来源中的 ObjectScript 文件的行尾。 如果仓库由 Windows 和 Mac/Ubuntu 所有者协作,此文件非常有用。
[.gitignore](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.gitignore) - 你不希望 git 跟踪其更改历史记录的文件。 通常是一些隐藏的操作系统级文件,例如 .DS_Store。
好了!
如何使你的仓库可被 docker 运行并且对协作友好?
1. 克隆[此仓库](https://github.com/intersystems-community/objectscript-docker-template)。
2. 复制以下所有文件:
[Dockerfile](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Dockerfile)
[docker-compose.yml](https://github.com/intersystems-community/objectscript-docker-template/blob/master/docker-compose.yml)
[Installer.cls](https://github.com/intersystems-community/objectscript-docker-template/blob/master/Installer.cls)
[iris.script](https://github.com/intersystems-community/objectscript-docker-template/blob/master/iris.script)
[settings.json](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.vscode/settings.json "settings.json"){#9f423fcac90bf80939d78b509e9c2dd2-d165a4a3719c56158cd42a4899e791c99338ce73}
[.dockerignore](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.dockerignore ".dockerignore"){#f7c5b4068637e2def526f9bbc7200c4e-c292b730421792d809e51f096c25eb859f53b637}
[.gitattributes](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.gitattributes ".gitattributes"){#fc723d30b02a4cca7a534518111c1a66-051218936162e5338d54836895e0b651e57973e1}
[.gitignore](https://github.com/intersystems-community/objectscript-docker-template/blob/master/.gitignore ".gitignore"){#a084b794bc0759e7a6b77810e01874f2-e6aff5167df2097c253736b40468e7b21e577eeb}
到你的仓库。
更改 [Dockerfile 中的这一行](https://github.com/intersystems-community/objectscript-docker-template/blob/10f4422c105d5c75111fde16a184a83f5ff86d06/Dockerfile#L15),使目录与仓库中要导入 IRIS 的 ObjectScript 匹配(如果在 /src 文件夹中则不要更改)。
就这样。 每个人(也包括你)都会将你的代码导入到新的 IRISAPP 命名空间的 IRIS 中。
**人们如何启动你的项目**
在 IRIS 中执行任何 ObjectScript 项目的法则为:
1. Git clone 项目到本地
2. 运行项目:
$ docker-compose up -d
$ docker-compose exec iris iris session iris
Node: 05a09e256d6b, Instance: IRIS
USER>zn "IRISAPP"
**开发者如何为你的项目做出贡献**
1. 对仓库执行分叉,并将分叉后的仓库 git clone 到本地
2. 在 VSCode 中打开该文件夹(还需要在 VSCode 中安装 [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) 和 [ObjectScript](https://marketplace.visualstudio.com/items?itemName=daimor.vscode-objectscript&ssr=false#review-details) 扩展)
3. 右击 docker-compose.yml->重启 - [VSCode ObjectScript](https://openexchange.intersystems.com/package/VSCode-ObjectScript) 将自动连接并准备好编辑/编译/调试
4. 向你的仓库提交、推送和拉取请求更改
以下是操作过程的短 gif:

好了! 编码愉快!
公告
Claire Zheng · 一月 7, 2021
亲爱的社区用户,您好!
您知道吗,在 Global Masters,您可以兑换关于以下任何 InterSystems 产品的 InterSystems 专家咨询:InterSystems IRIS数据平台、IRIS医疗版、互操作平台 (Ensemble)、IRIS Analytics (DeepSee)、Caché、HealthShare统一的健康档案。
我们还有一个振奋人心的消息要分享,我们现在可以提供以下语言的咨询:
英语、葡萄牙语、俄语、德语、法语、意大利语、西班牙语、日语、汉语
而且! 咨询时长延长到 1.5 小时,让您与专家深入探讨主题。
如果您有兴趣,不要犹豫,快来 Global Masters 兑换奖励吧! 如果您还不是 Global Masters 的会员,欢迎您“点击此处加入”点击 InterSystems 登录按钮,然后使用您的 InterSystems WRC 凭据)。
要了解关于 Global Masters 的更多信息,请阅读文章:认识Global Masters 倡导中心,从这里开始!
让我们在 InterSystems Global Masters 上见!🙂
文章
Michael Lei · 五月 12, 2021
# InterSystems 数据平台和性能 - 第 5 部分 使用 SNMP 进行监控
在之前的帖子中,我展示了如何使用 pButtons 收集历史性能指标。 我首选 pButtons 是因为我知道它随每个数据平台实例(Ensemble、Caché、...)一起安装。 不过,还有其他方法可以实时收集、处理和显示 Caché 性能指标,以进行简单的监视,或进行更重要的并且复杂得多的运营分析和容量计划。 最常见的数据收集方法之一是使用 SNMP(简单网络管理协议)。
SNMP 是 Caché 向各种管理工具提供管理和监控信息的标准方式。 Caché 在线文档包含了 Caché 和 SNMP 之间接口的详细信息。 虽然 SNMP 应该可以直接与 Caché 配合工作,但仍有一些配置技巧和陷阱。 我经历了很多次错误的开始,并且在 InterSystems 其他同事的帮助下,才让 Caché 与操作系统 SNMP 主代理建立对话,所以我写了这篇帖子,希望您可以避免同样的痛苦。
在本帖中,我将介绍如何为 Red Hat Linux 上的 Caché 设置和配置 SNMP,您应该能够对其他 \*nix 版本使用相同步骤。 我使用 Red Hat 写这篇文章是因为在 Linux 上进行设置更棘手一些;在 Windows 上,Caché 会自动安装一个 DLL 来与标准 Windows SNMP 服务连接,所以应该更容易配置。
在服务器端设置 SNMP 后,就可以使用任意数量的工具开始监控。 我将展示如何使用流行的 PRTG 工具进行监控,但还有许多其他工具 - [这是部分列表](https://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems)。
注意 Caché 和 Ensemble 的 MIB 文件包含在 `Caché_installation_directory/SNMP` 文件夹中,这两个文件为:`ISC-CACHE.mib` 和 `ISC-ENSEMBLE.mib`。
#### 本系列的前几个帖子:
- [第 1 部分 - 入门:收集指标。](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-1)
- [第 2 部分 - 研究收集的指标。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-2篇)
- [第 3 部分 - 聚焦 CPU。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-3-篇:聚焦-cpu)
- [第 4 部分 - 关注内存。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-第-4-篇-关注内存)
# 从这里开始...
首先查看 [Caché 在线文档](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmp)中的“使用 SNMP 监视 Caché”。
## 1. Caché 配置
按照 [Caché 在线文档](http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmp)的“_在 Caché 中管理 SNMP_”部分中的步骤,启用 Caché 监视服务,并将 Caché SNMP 子代理配置为在 Caché 启动时自动启动。
检查 Caché 进程是否正在运行,例如查看进程列表或操作系统:
ps -ef | grep SNMP
root 1171 1097 0 02:26 pts/1 00:00:00 grep SNMP
root 27833 1 0 00:34 pts/0 00:00:05 cache -s/db/trak/hs2015/mgr -cj -p33 JOB^SNMP
就是这样,Caché 配置完成了!
## 2. 操作系统配置
这里的工作会多一些。 首先检查 snmpd 守护程序是否已安装并且正在运行。 如果结果为否,则安装并启动 snmpd。
检查 snmpd 状态:
service snmpd status
启动或停止 snmpd:
service snmpd start|stop
如果未安装 snmp,则必须按照操作系统说明进行安装,例如:
yum -y install net-snmp net-snmp-utils
## 3. 配置 snmpd
如 Caché 文档中所述,在 Linux 系统上,最重要的任务是验证系统上的 SNMP 主代理是否与 Agent Extensibility (AgentX) 协议兼容(Caché 以子代理的形式运行),并且主代理处于活动状态,并在标准 AgentX TCP 端口 705 上侦听连接。
我在这里遇到了问题。 我在 `snmp.conf` 文件中犯了一些初级错误,意味着 Caché SNMP 子代理未与操作系统主代理进行通信。 以下示例 `/etc/snmp/snmp.conf` 文件已配置为启动 agentX 并提供对 Caché 和 Ensemble SNMP MIB 的访问。
_请注意,您必须确认以下配置是否符合您的组织的安全策略。_
至少必须编辑以下几行以反映您的系统设置。
例如,将:
syslocation "System_Location"
更改为
syslocation "Primary Server Room"
此外,至少编辑以下两行:
syscontact "Your Name"
trapsink Caché_database_server_name_or_ip_address public
编辑或替换现有 `/etc/snmp/snmp.conf` 文件以匹配以下内容:
###############################################################################
#
# snmpd.conf:
# An example configuration file for configuring the NET-SNMP agent with Cache.
#
# This has been used successfully on Red Hat Enterprise Linux and running
# the snmpd daemon in the foreground with the following command:
#
# /usr/sbin/snmpd -f -L -x TCP:localhost:705 -c./snmpd.conf
#
# You may want/need to change some of the information, especially the
# IP address of the trap receiver of you expect to get traps. I've also seen
# one case (on AIX) where we had to use the "-C" option on the snmpd command
# line, to make sure we were getting the correct snmpd.conf file.
#
###############################################################################
###########################################################################
# SECTION: System Information Setup
#
# This section defines some of the information reported in
# the "system" mib group in the mibII tree.
# syslocation: The [typically physical] location of the system.
# Note that setting this value here means that when trying to
# perform an snmp SET operation to the sysLocation.0 variable will make
# the agent return the "notWritable" error code. IE, including
# this token in the snmpd.conf file will disable write access to
# the variable.
# arguments: location_string
syslocation "System Location"
# syscontact: The contact information for the administrator
# Note that setting this value here means that when trying to
# perform an snmp SET operation to the sysContact.0 variable will make
# the agent return the "notWritable" error code. IE, including
# this token in the snmpd.conf file will disable write access to
# the variable.
# arguments: contact_string
syscontact "Your Name"
# sysservices: The proper value for the sysServices object.
# arguments: sysservices_number
sysservices 76
###########################################################################
# SECTION: Agent Operating Mode
#
# This section defines how the agent will operate when it
# is running.
# master: Should the agent operate as a master agent or not.
# Currently, the only supported master agent type for this token
# is "agentx".
#
# arguments: (on|yes|agentx|all|off|no)
master agentx
agentXSocket tcp:localhost:705
###########################################################################
# SECTION: Trap Destinations
#
# Here we define who the agent will send traps to.
# trapsink: A SNMPv1 trap receiver
# arguments: host [community] [portnum]
trapsink Caché_database_server_name_or_ip_address public
###############################################################################
# Access Control
###############################################################################
# As shipped, the snmpd demon will only respond to queries on the
# system mib group until this file is replaced or modified for
# security purposes. Examples are shown below about how to increase the
# level of access.
#
# By far, the most common question I get about the agent is "why won't
# it work?", when really it should be "how do I configure the agent to
# allow me to access it?"
#
# By default, the agent responds to the "public" community for read
# only access, if run out of the box without any configuration file in
# place. The following examples show you other ways of configuring
# the agent so that you can change the community names, and give
# yourself write access to the mib tree as well.
#
# For more information, read the FAQ as well as the snmpd.conf(5)
# manual page.
#
####
# First, map the community name "public" into a "security name"
# sec.name source community
com2sec notConfigUser default public
####
# Second, map the security name into a group name:
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
####
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
# access to 'internet' subtree
view systemview included .1.3.6.1
# access to Cache MIBs Caché and Ensemble
view systemview included .1.3.6.1.4.1.16563.1
view systemview included .1.3.6.1.4.1.16563.2
####
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact systemview none none
编辑 `/etc/snmp/snmp.conf` 文件后,重启 snmpd 守护程序。
service snmpd restart
检查 snmpd 状态,注意出现状态行 __Turning on AgentX master support__,说明 AgentX 已启动。
h-4.2# service snmpd restart
Redirecting to /bin/systemctl restart snmpd.service
sh-4.2# service snmpd status
Redirecting to /bin/systemctl status snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2016-04-27 00:31:36 EDT; 7s ago
Main PID: 27820 (snmpd)
CGroup: /system.slice/snmpd.service
└─27820 /usr/sbin/snmpd -LS0-6d -f
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com snmpd[27820]: Turning on AgentX master support.
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com snmpd[27820]: NET-SNMP version 5.7.2
Apr 27 00:31:36 vsan-tc-db2.iscinternal.com systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
sh-4.2#
重启 snmpd 后,必须使用 `^SNMP` 例程重启 Caché SNMP 子代理:
%SYS>do stop^SNMP()
%SYS>do start^SNMP(705,20)
操作系统 snmpd 守护程序和 Caché 子代理此时应该正在运行并且可访问。
## 4. 测试 MIB 访问
可以在命令行中使用以下命令检查 MIB 访问。 `snmpget` 返回一个值:
snmpget -mAll -v 2c -c public vsan-tc-db2 .1.3.6.1.4.1.16563.1.1.1.1.5.5.72.50.48.49.53
SNMPv2-SMI::enterprises.16563.1.1.1.1.5.5.72.50.48.49.53 = STRING: "Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2015.2.1 (Build 705U) Mon Aug 31 2015 16:53:38 EDT"
`snmpwalk` 将“遍历”MIB 树或分支:
snmpwalk -m ALL -v 2c -c public vsan-tc-db2 .1.3.6.1.4.1.16563.1.1.1.1
SNMPv2-SMI::enterprises.16563.1.1.1.1.2.5.72.50.48.49.53 = STRING: "H2015"
SNMPv2-SMI::enterprises.16563.1.1.1.1.3.5.72.50.48.49.53 = STRING: "/db/trak/hs2015/cache.cpf"
SNMPv2-SMI::enterprises.16563.1.1.1.1.4.5.72.50.48.49.53 = STRING: "/db/trak/hs2015/mgr/"
etc
etc
还有几个 Windows 和 \*nix 客户端可用于查看系统数据。 我使用免费的 iReasoning MIB Browser。 您需要将 ISC-CACHE.MIB 文件加载到客户端中,以便它了解 MIB 的结构。
下图显示了 OSX 上的 iReasoning MIB Browser。

## 包括在监视工具中
这里是实施过程中可能有较大差异的地方。 监视或分析工具由您选择。
_请为本帖留下评论,详细说明您使用的工具,以及通过该工具获得的系统监视和管理数值。 这将对其他社区成员有很大帮助。_
下面是流行的 _PRTG_ 网络监视器的截图,其中显示了 Caché 指标。 将 Caché 指标包括在 PRTG 中的步骤与其他工具类似。

### 示例工作流程 - 将 Caché MIB 添加到监视工具中。
#### 第 1 步.
确保您可以连接到操作系统 MIB。 一个提示是针对操作系统而非 Caché 进行故障排除。 监视工具很可能已经了解常见的操作系统 MIB 并针对它们进行了预先配置,因此更容易获得供应商或其他用户的帮助。
根据您选择的监视工具,您可能需要添加 SNMP“模块”或“应用程序”,它们通常是免费或开源的。 我发现供应商对此步骤的说明相当简单直接。
监视操作系统指标后,就该添加 Caché 了。
#### 第 2 步.
将 `ISC-CACHE.mib` 和 `ISC-ENSEMBLE.mib` 导入到工具中,以便其了解 MIB 结构。
这里的步骤各不相同,例如 PRTG 有一个“MIB Importer”实用工具。 基本步骤是在工具中打开文本文件 `ISC-CACHE.mib`,然后将其导入为工具内部格式。 例如,Splunk 使用 Python 格式等。
_注:_我发现如果试图添加一个带有所有 Caché MIB 分支的传感器,PRTG 工具会超时。 我假定它在遍历整个树,并在处理进程列表等某些指标时超时,我没有花时间进行故障排除,而是通过只从 `ISC-CACHE.mib` 中导入性能分支 (cachePerfTab) 来解决这个问题。
MIB 经过导入/转换后可以重复使用,以收集网络中其他服务器的数据。 上图显示了 PRTG 使用 Sensor Factory 传感器将多个传感器组合成一个图表。
# 总结
有许多监视工具、报警工具和一些非常智能的分析工具可用,一些是免费的,另一些需要购买许可证来获得支持和各种功能。
您必须监视您的系统,并了解哪个活动是正常的,哪个活动超出正常范围且必须被调查。 SNMP 是揭示 Caché 和 Ensemble 指标的一种简单方法。
这个可以写一个windows版的学习下吗 我们到海外社区找找看,您要是找到合适的可以发给我们,我们尽快安排翻译。谢谢! 请问有windows版本的吗
公告
Michael Lei · 五月 13, 2021
Intersystems RIS 机器学习工具包, 包括Python/R/Julia, 支持协调管理基于云的高级分析服务,如微软Azure数据工厂和机器学习。
文章
Michael Lei · 七月 27, 2021
以下步骤展示如何显示 `/api/monitor` 服务提供的指标列表示例。
在上个帖子中,我概述了以 Prometheus 格式显示 IRIS 指标的服务。 该贴介绍了如何在容器中设置和运行 [IRIS 预览版 2019.4](https://community.intersystems.com/post/intersystems-iris-and-iris-health-20194-preview-published),然后列出了指标。
本帖假定您已安装 Docker。 如果未安装,现在就为您的平台安装吧 :)
### 步骤 1. 下载并运行 docker 形式的 IRIS 预览版
按照[预览发行版](https://wrc.intersystems.com/wrc/coDistPreview.csp "Preview Distributions")的下载说明下载**预览版许可证密钥**和 **IRIS Docker 映像**。 例如,我选择了 **InterSystems IRIS for Health 2019.4**。
按照 [Docker 容器中的 InterSystems 产品初见](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=AFL_containers "Run IRIS in a container instructions")中的说明操作。 如果您熟悉容器,请跳转到标题为“**下载 InterSystems IRIS Docker 映像**”的部分。
以下终端输出说明了我用来加载 docker 映像的过程。 docker load 命令可能需要几分钟的时间才能运行;
$ pwd
/Users/myhome/Downloads/iris_2019.4
$ ls
InterSystems IRIS for Health (Container)_2019.4.0_Docker(Ubuntu)_12-31-2019.ISCkey irishealth-2019.4.0.379.0-docker.tar
$ docker load -i irishealth-2019.4.0.379.0-docker.tar
762d8e1a6054: Loading layer [==================================================>] 91.39MB/91.39MB
e45cfbc98a50: Loading layer [==================================================>] 15.87kB/15.87kB
d60e01b37e74: Loading layer [==================================================>] 12.29kB/12.29kB
b57c79f4a9f3: Loading layer [==================================================>] 3.072kB/3.072kB
b11f1f11664d: Loading layer [==================================================>] 73.73MB/73.73MB
22202f62822e: Loading layer [==================================================>] 2.656GB/2.656GB
50457c8fa41f: Loading layer [==================================================>] 14.5MB/14.5MB
bc4f7221d76a: Loading layer [==================================================>] 2.048kB/2.048kB
4db3eda3ff8f: Loading layer [==================================================>] 1.491MB/1.491MB
Loaded image: intersystems/irishealth:2019.4.0.379.0
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
intersystems/irishealth 2019.4.0.379.0 975a976ad1f4 3 weeks ago 2.83GB
为简单起见,将密钥文件复制将用于持久性存储的文件夹位置,并重命名为 `iris.key`;
$ mkdir -p /Users/myhome/iris/20194
$ cp 'InterSystems IRIS for Health (Container)_2019.4.0_Docker(Ubuntu)_12-31-2019.ISCkey' /Users/myhome/iris/20194/iris.key
$ cd /Users/myhome/iris/20194
$ ls
iris.key
使用为持久性存储创建的文件夹启动 IRIS;
$ docker run --name iris --init --detach --publish 52773:52773 --volume `pwd`:/external intersystems/irishealth:2019.4.0.379.0 --key /external/iris.key
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
009e52c121f0 intersystems/irishealth:2019.4.0.379.0 "/iris-main --key /e…" About a minute ago Up About a minute (healthy) 0.0.0.0:52773->52773/tcp iris
很好! 您现在可以连接到正在运行的容器上的[系统管理门户](http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen "Home SMP")。 我使用的登录名/密码是 _SuperUser/SYS_;您第一次登录时会被提示更改密码。
导航到 Web 应用程序。 `System > Security Management > Web Applications`
您将看到一个 Web 应用程序:`/api/monitor`,这是用于显示 IRIS 指标的服务。
> **您无需执行任何操作即可返回指标,它直接可用。**
### 步骤 2. 预览指标
在以后的帖子中,我们将使用 Prometheus 或 SAM _抓取_此端点,以设置的间隔收集指标。 但现在,让我们看一下为此实例返回的指标的完整列表。 例如,在 Linux 和 OSX 上,一个简单的方法是使用 `curl` 命令发出一个 HTTP GET。 例如,在我的(几乎不活动的)容器上,列表的开头为:
$ curl localhost:52773/api/monitor/metrics
:
:
iris_cpu_usage 0
iris_csp_activity{id="127.0.0.1:52773"} 56
iris_csp_actual_connections{id="127.0.0.1:52773"} 8
iris_csp_gateway_latency{id="127.0.0.1:52773"} .588
iris_csp_in_use_connections{id="127.0.0.1:52773"} 1
iris_csp_private_connections{id="127.0.0.1:52773"} 0
iris_csp_sessions 1
iris_cache_efficiency 35.565
:
:
等等。 在生产系统上,该列表可能非常长。 我在帖子末尾转储了完整列表。
另一个实用方法是使用 [Postman 应用程序](https://www.getpostman.com "POSTMAN"),但还有其他方法。 假定您已安装适合您的平台的 Postman,则可以发出 HTTP GET 并查看返回的指标。
## 总结
暂时就这么多内容。 在下个帖子中,我将从收集 _Prometheus_ 中的数据开始,并查看一个 _Grafana_ 仪表板示例。
### 预览容器中的完整列表
生产系统将提供更多指标。 从一些标签中可以看出,例如 `{id="IRISLOCALDATA"}` ,有一些指标与数据库有关,或者按进程类型对应于 CPU `{id="CSPDMN"}`。
iris_cpu_pct{id="CSPDMN"} 0
iris_cpu_pct{id="CSPSRV"} 0
iris_cpu_pct{id="ECPWorker"} 0
iris_cpu_pct{id="GARCOL"} 0
iris_cpu_pct{id="JRNDMN"} 0
iris_cpu_pct{id="LICENSESRV"} 0
iris_cpu_pct{id="WDSLAVE"} 0
iris_cpu_pct{id="WRTDMN"} 0
iris_cpu_usage 0
iris_csp_activity{id="127.0.0.1:52773"} 57
iris_csp_actual_connections{id="127.0.0.1:52773"} 8
iris_csp_gateway_latency{id="127.0.0.1:52773"} .574
iris_csp_in_use_connections{id="127.0.0.1:52773"} 1
iris_csp_private_connections{id="127.0.0.1:52773"} 0
iris_csp_sessions 1
iris_cache_efficiency 35.850
iris_db_expansion_size_mb{id="ENSLIB"} 0
iris_db_expansion_size_mb{id="HSCUSTOM"} 0
iris_db_expansion_size_mb{id="HSLIB"} 0
iris_db_expansion_size_mb{id="HSSYS"} 0
iris_db_expansion_size_mb{id="IRISAUDIT"} 0
iris_db_expansion_size_mb{id="IRISLOCALDATA"} 0
iris_db_expansion_size_mb{id="IRISSYS"} 0
iris_db_expansion_size_mb{id="IRISTEMP"} 0
iris_db_free_space{id="ENSLIB"} .055
iris_db_free_space{id="HSCUSTOM"} 2.3
iris_db_free_space{id="HSLIB"} 113
iris_db_free_space{id="HSSYS"} 9.2
iris_db_free_space{id="IRISAUDIT"} .094
iris_db_free_space{id="IRISLOCALDATA"} .34
iris_db_free_space{id="IRISSYS"} 6.2
iris_db_free_space{id="IRISTEMP"} 20
iris_db_latency{id="ENSLIB"} 0.030
iris_db_latency{id="HSCUSTOM"} 0.146
iris_db_latency{id="HSLIB"} 0.027
iris_db_latency{id="HSSYS"} 0.018
iris_db_latency{id="IRISAUDIT"} 0.017
iris_db_latency{id="IRISSYS"} 0.020
iris_db_latency{id="IRISTEMP"} 0.021
iris_db_max_size_mb{id="ENSLIB"} 0
iris_db_max_size_mb{id="HSCUSTOM"} 0
iris_db_max_size_mb{id="HSLIB"} 0
iris_db_max_size_mb{id="HSSYS"} 0
iris_db_max_size_mb{id="IRISAUDIT"} 0
iris_db_max_size_mb{id="IRISLOCALDATA"} 0
iris_db_max_size_mb{id="IRISSYS"} 0
iris_db_max_size_mb{id="IRISTEMP"} 0
iris_db_size_mb{id="HSLIB",dir="/usr/irissys/mgr/hslib/"} 1321
iris_db_size_mb{id="HSSYS",dir="/usr/irissys/mgr/hssys/"} 21
iris_db_size_mb{id="ENSLIB",dir="/usr/irissys/mgr/enslib/"} 209
iris_db_size_mb{id="IRISSYS",dir="/usr/irissys/mgr/"} 113
iris_db_size_mb{id="HSCUSTOM",dir="/usr/irissys/mgr/HSCUSTOM/"} 11
iris_db_size_mb{id="IRISTEMP",dir="/usr/irissys/mgr/iristemp/"} 21
iris_db_size_mb{id="IRISAUDIT",dir="/usr/irissys/mgr/irisaudit/"} 1
iris_db_size_mb{id="IRISLOCALDATA",dir="/usr/irissys/mgr/irislocaldata/"} 1
iris_directory_space{id="HSLIB",dir="/usr/irissys/mgr/hslib/"} 53818
iris_directory_space{id="HSSYS",dir="/usr/irissys/mgr/hssys/"} 53818
iris_directory_space{id="ENSLIB",dir="/usr/irissys/mgr/enslib/"} 53818
iris_directory_space{id="IRISSYS",dir="/usr/irissys/mgr/"} 53818
iris_directory_space{id="HSCUSTOM",dir="/usr/irissys/mgr/HSCUSTOM/"} 53818
iris_directory_space{id="IRISTEMP",dir="/usr/irissys/mgr/iristemp/"} 53818
iris_directory_space{id="IRISAUDIT",dir="/usr/irissys/mgr/irisaudit/"} 53818
iris_disk_percent_full{id="HSLIB",dir="/usr/irissys/mgr/hslib/"} 10.03
iris_disk_percent_full{id="HSSYS",dir="/usr/irissys/mgr/hssys/"} 10.03
iris_disk_percent_full{id="ENSLIB",dir="/usr/irissys/mgr/enslib/"} 10.03
iris_disk_percent_full{id="IRISSYS",dir="/usr/irissys/mgr/"} 10.03
iris_disk_percent_full{id="HSCUSTOM",dir="/usr/irissys/mgr/HSCUSTOM/"} 10.03
iris_disk_percent_full{id="IRISTEMP",dir="/usr/irissys/mgr/iristemp/"} 10.03
iris_disk_percent_full{id="IRISAUDIT",dir="/usr/irissys/mgr/irisaudit/"} 10.03
iris_ecp_conn 0
iris_ecp_conn_max 2
iris_ecp_connections 0
iris_ecp_latency 0
iris_ecps_conn 0
iris_ecps_conn_max 1
iris_glo_a_seize_per_sec 0
iris_glo_n_seize_per_sec 0
iris_glo_ref_per_sec 7
iris_glo_ref_rem_per_sec 0
iris_glo_seize_per_sec 0
iris_glo_update_per_sec 2
iris_glo_update_rem_per_sec 0
iris_journal_size 2496
iris_journal_space 50751.18
iris_jrn_block_per_sec 0
iris_jrn_entry_per_sec 0
iris_jrn_free_space{id="WIJ",dir="default"} 50751.18
iris_jrn_free_space{id="primary",dir="/usr/irissys/mgr/journal/"} 50751.18
iris_jrn_free_space{id="secondary",dir="/usr/irissys/mgr/journal/"} 50751.18
iris_jrn_size{id="WIJ"} 100
iris_jrn_size{id="primary"} 2
iris_jrn_size{id="secondary"} 0
iris_license_available 31
iris_license_consumed 1
iris_license_percent_used 3
iris_log_reads_per_sec 5
iris_obj_a_seize_per_sec 0
iris_obj_del_per_sec 0
iris_obj_hit_per_sec 2
iris_obj_load_per_sec 0
iris_obj_miss_per_sec 0
iris_obj_new_per_sec 0
iris_obj_seize_per_sec 0
iris_page_space_per_cent_used 0
iris_phys_mem_per_cent_used 95
iris_phys_reads_per_sec 0
iris_phys_writes_per_sec 0
iris_process_count 29
iris_rtn_a_seize_per_sec 0
iris_rtn_call_local_per_sec 10
iris_rtn_call_miss_per_sec 0
iris_rtn_call_remote_per_sec 0
iris_rtn_load_per_sec 0
iris_rtn_load_rem_per_sec 0
iris_rtn_seize_per_sec 0
iris_sam_get_db_sensors_seconds .000838
iris_sam_get_jrn_sensors_seconds .001024
iris_system_alerts 0
iris_system_alerts_new 0
iris_system_state 0
iris_trans_open_count 0
iris_trans_open_secs 0
iris_trans_open_secs_max 0
iris_wd_buffer_redirty 0
iris_wd_buffer_write 0
iris_wd_cycle_time 0
iris_wd_proc_in_global 0
iris_wd_size_write 0
iris_wd_sleep 10002
iris_wd_temp_queue 42
iris_wd_temp_write 0
iris_wdwij_time 0
iris_wd_write_time 0
iris_wij_writes_per_sec 0
公告
Jeff Liu · 一月 7, 2021
现在,InterSystems IRIS、IRIS for Health 和 IRIS Studio 的 2020.4 版发布了预览版本。由于是预览版本,因此我们渴望在下个月正式发布之前了解您对新版本的体验。
**InterSystems IRIS 数据平台 2020.4 **使开发、部署和管理增强型应用程序和业务流程(桥接数据和应用程序孤岛)变得更加容易。 其拥有众多新功能,包括:
面向应用程序和界面开发者的增强功能,包括:
使用 Oracle OpenJDK 和 AdoptOpenJDK 时均支持 Java SE 11 LTS
支持 JDBC 连接池
分段虚拟文档的路由规则新增“foreach”操作
面向数据库和系统管理员的增强功能,包括:
ICM 现在支持部署系统警报和监视 (SAM) 以及 InterSystems API 管理器(IAM)
常见管理任务的 SQL 语法得到扩展
InterSystems 报告的部署得到简化
** InterSystems IRIS for Health 2020.4 **包括 InterSystems IRIS 的所有增强功能。 另外,此版本还包括:
增强的 FHIR 支持,包括对 FHIR 配置文件的支持
支持 RMD IHE 配置文件
在 HL7 迁移工具中支持 DataGate
有关这些功能的更多详细信息,请参见产品文档:
InterSystems IRIS 2020.4 文档及版本说明
InterSystems IRIS for Health 2020.4 文档及版本说明
由于这是 CD 版本,因此仅以 OCI(开放容器计划) 亦即 Docker 容器格式提供。 容器映像可用于面向 Linux x86-64 和 Linux ARM64 的 OCI 兼容运行时间引擎,如[支持的平台文档](https://docs.intersystems.com/iris20204/csp/docbook/platforms/index.html)中详述。
**企业版**容器映像及其所有相应组件都可以使用以下命从[ InterSystems 容器注册表](https://docs.intersystems.com/components/csp/docbook/Doc.View.cls?KEY=PAGE_containerregistry)中获得:
docker pull containers.intersystems.com/intersystems/iris:2020.4.0.521.0
docker pull containers.intersystems.com/intersystems/irishealth:2020.4.0.521.0
有关可用映像的完整列表,请参阅[ ICR 文档](https://docs.intersystems.com/components/csp/docbook/Doc.View.cls?KEY=PAGE_containerregistry#PAGE_containerregistry_images)。
也可以使用以下命令从[ Docker 存储库](https://hub.docker.com/_/intersystems-iris-data-platform)提取**社区版**的容器映像:
docker pull store/intersystems/iris-community:2020.4.0.521.0
docker pull store/intersystems/iris-community-arm64:2020.4.0.521.0
docker pull store/intersystems/irishealth-community:2020.4.0.521.0
docker pull store/intersystems/irishealth-community-arm64:2020.4.0.521.0
另外,可以通过 WRC 的[预览版本下载网站](https://wrc.intersystems.com/wrc/coDistPreview.csp)获取所有容器映像的 tarball 版本。
InterSystems IRIS Studio 2020.4 是 Microsoft Windows 支持的独立开发映像。 其可以与 InterSystems IRIS 和 IRIS for Health 版本 2020.4 及更低版本一起使用,还可以与 Caché 和 Ensemble 一起使用。 可以通过 WRC 的[预览下载网站](https://wrc.intersystems.com/wrc/coDistPreview.csp)进行下载。
此预览版本的内部版本号是 2020.4.0.521.0。
文章
Li Yan · 一月 18, 2021
企业需要快速有效地扩展和管理其全球计算基础设施,同时优化和管理资本成本及支出。 Amazon Web Services (AWS) 和 Elastic Compute Cloud (EC2) 计算和存储服务提供高度稳健的全球化的计算基础设施,可满足最苛刻的基于 Caché 的应用程序的需求。Amazon EC2 基础设施使各公司能够迅速预置计算能力和/或快速灵活地将其现有内部基础架构扩展到云端。 AWS 针对安全、网络、计算和存储提供了一套丰富的服务和强大的企业级机制。
AWS 的核心是 Amazon EC2。 它是支持各种操作系统和机器配置(例如 CPU、RAM、网络)的云计算基础设施。 AWS 提供预先配置的虚拟机 (VM) 映像(称为 Amazon 系统映像或 AMI),客户操作系统包括各种 Linux® 和 Windows 发行版及版本。 可以将其它软件用作 AWS 中运行的虚拟化实例的基础。 您可以将这些 AMI 用作实例化以及安装或配置其他软件、数据等的起点,以创建特定于应用程序或工作负载的 AMI。
与任何平台或部署模式一样,必须留心以确保考虑到应用程序环境的各个方面,例如性能、可用性、操作和管理程序。
本文将详细介绍以下每个方面。
网络设置和配置。 此部分介绍基于 Caché 的应用程序在 AWS 中的网络设置,包括为参考架构内不同层级和角色的逻辑服务器组提供支持的子网。
服务器设置和配置。 此部分介绍为每一层设计各种服务器时涉及的服务和资源。 还包括用于跨可用区实现高可用性的架构。
安全。 此部分讨论 AWS 中的安全机制,包括如何配置实例和网络安全以实现对整体解决方案以及层和实例之间的授权访问。
部署和管理。此部分提供有关打包、部署、监控和管理的详细信息。
架构和部署方案
本文提供了几个在 AWS 内实现的参考架构,作为提供基于 InterSystems 技术(包括 Caché、Ensemble、HealthShare、TrakCare)以及相关嵌入式技术(如 DeepSee、iKnow、CSP、Zen 和 Zen Mojo)的高性能和高可用性应用程序的示例。
为了了解如何在 AWS 上托管 Caché 及相关组件,我们先来回顾一下典型 Caché 部署的架构和组件,并探讨一些常见的方案和拓扑。
Caché架构回顾
InterSystems 数据平台不断发展,提供先进的数据库管理系统和快速的应用程序开发环境,以在处理和分析复杂数据模型以及开发 Web 和移动应用程序方面实现突破。
这是新一代的数据库技术,提供多种数据访问模式。 数据只在单个集成数据字典中描述一次,并且可以通过对象访问、高性能 SQL 和强大的多维存取即时进行访问 – 所有这些方式可以同时访问相同数据。
图 1 说明了可用的 Caché 高级架构组件层和服务。 这些通用层也适用于 InterSystems TrakCare 和 HealthShare 产品。
图 1:高级组件层
常见部署方案
部署有许多可能的组合,但本文将介绍两种方案:混合模型和完整的云托管模型。
混合模型
在此方案中,公司希望在需要时将企业内部资源和 AWS EC2 资源都用于灾难恢复、内部维护应急、重新平台化计划或短期/长期扩容。 此模型可以为内部故障转移镜像成员集群提供业务连续性和灾难恢复的高可用性。
在该方案中,此模型的连接依赖于内部部署和 AWS 可用区之间的 VPN 隧道,将 AWS 资源作为企业数据中心的扩展。 还有其他连接方法,例如 _AWS Direct Connect_。 但是,这不是本文涵盖的内容。 有关 AWS Direct Connect 的更多详细信息,可以在here找到。
有关设置此 Amazon Virtual Private Cloud (VPC) 示例以支持内部数据中心灾难恢复的详细信息可以在here找到。
图 2:使用 AWS VPC 提供内部灾难恢复的混合模型
上面的示例展示了一个故障转移镜像对通过与 AWS VPC 的 VPN 连接在内部数据中心的运行。 所示的 VPC 在给定 AWS 区域的双可用区中提供了多个子网。 有两个灾难恢复 (DR) 异步镜像成员 (每个可用区有一个) 提供弹性。
云托管模型
在此方案中,基于 Caché 的应用程序(包括数据层和表示层)完全放在 AWS 云中,使用了单个 AWS 区域内的多个可用区。 可以使用相同的 VPN 隧道 AWS Direct Connect, 甚至纯互联网连接模型。
图 3:支持完整生产工作负载的云托管模型
图 3 中的示例说明了在 VPC 中支持整个应用程序生产部署的部署模型。 此模型利用双可用区,在可用区之间同步故障转移镜像,同时将负载均衡 Web 服务器和相关应用程序服务器作为 ECP 客户端。 每个层都隔离在一个单独的安全组中,以进行网络安全控制。 IP 地址和端口范围仅根据应用程序的需要开放。
存储和计算资源
存储
有多种类型的存储选项可供选择。 就本参考架构而言,将针对几种可能的用例讨论 Amazon Elastic Block Store (Amazon EBS) 和 (也称为临时驱动器)卷。 各种存储选项的更多详细信息可以在 here 和 here 找到。
Elastic Block Storage (EBS)
EBS 提供了可与 Amazon EC2 实例(虚拟机)配合使用的持久块级存储,在 Linux 或 Windows 中可以将其格式化并挂载为传统文件系统,最重要的是,这些卷是非实例存储,独立于单个 Amazon EC2 实例的运行寿命而持续存在,这对于数据库系统非常重要。
此外,Amazon EBS 还提供了创建卷的时间点快照的功能,这些快照会持久保存在 Amazon S3 中。 这些快照可以用作新的 Amazon EBS 卷的起点,并保护数据以实现长期耐久性。 同一快照可用于实例化任意数量的卷。 这些快照可以跨 AWS 区域复制,因此可以更容易地利用多个 AWS 区域进行地理扩张、数据中心迁移和灾难恢复。 Amazon EBS 卷的大小范围为 1 GB 到 16 TB,以 1 GB 为增量进行分配。
Amazon EBS 内有三种不同的类型:磁介质卷、通用型 (SSD) 和预置 IOPS (SSD)。 以下各小节提供了每种类型的简要介绍。
磁介质卷
磁介质卷为具有中等或突发 I/O 要求的应用程序提供经济高效的存储。 磁介质卷设计为平均每秒提供约 100 次输入/输出操作 (IOPS),最大突发能力为数百 IOPS。 磁介质卷也非常适合用作启动卷,其突发能力提供了快速的实例启动时间。
通用型 (SSD)
通用型 (SSD) 卷提供具有成本效益的存储,是各种工作负载的理想选择。 这些卷的延迟只有个位数毫秒,能够长时间突发至 3,000 IOPS,基准性能为 3 IOPS/GB,最高可达 10,000 IOPS (3,334 GB)。 通用型 (SSD) 卷的大小范围为 1 GB 到 16 TB。
预置 IOPS (SSD)
预置 IOPS (SSD) 卷设计用于为 I/O 密集型工作负载(例如对存储性能和随机访问 I/O 吞吐量的一致性敏感的数据库工作负载)提供可预测的高性能。 在创建卷时指定 IOPS 速率,然后 Amazon EBS 在给定一年的 99.9% 的时间内提供 10% 内的预置 IOPS 性能。 预置 IOPS (SSD) 卷的大小可以为 4 GB 到 16 TB,每个卷最多可预置 20,000 IOPS。 预置的 IOPS 与请求的卷大小之比最大为 30;例如,IOPS 为 3,000 的卷必须至少为 100 GB 大小。 预置 IOPS (SSD) 卷对每个预置的 IOPS 的吞吐量限制为 256 KB,最高 320 MB/秒(1,280 IOPS)。
本文讨论的架构使用 EBS 卷,因为这些卷更适合需要可预测的低延迟每秒输入/输出操作 (IOPS) 和吞吐量的生产工作负载。 选择特定的虚拟机类型时必须小心,因为并非所有 EC2 实例类型都可以访问 EBS 存储。
注意: 由于 Amazon EBS 卷是网络附加设备,Amazon EC2 实例执行的其他网络 I/O 以及共享网络上的总负载可能会影响单个 Amazon EBS 卷的性能。 为了让 Amazon EC2 实例充分利用 Amazon EBS 卷上的预置 IOPS,可以将选定的 Amazon EC2 实例类型作为 Amazon EBS 优化的实例启动。
有关 EBS 卷的详细信息,可以在here 找到。
EC2 实例存储(临时驱动器)
EC2 实例存储由托管您的正在运行的 Amazon EC2 实例的同一台物理服务器上的磁盘存储的预配置和预附加块组成。 提供的磁盘存储量因 Amazon EC2 实例类型而异。 在提供实例存储的 Amazon EC2 实例系列中,较大的实例往往提供更多更大的实例存储量。
存储优化 (I2) 和密集存储 (D2) 的 Amazon EC2 实例系列提供针对特定用例的专用实例存储。 例如,I2 实例提供了非常快的 SSD 实例存储,能够支持超过 365,000 的随机读取 IOPS 和 315,000 的写入 IOPS,并提供具有成本吸引力的定价模型。
与 EBS 卷不同,该存储不是永久性的,只能用于实例的生命周期,不能分离或附加到其他实例。 实例存储用于临时存储不断变化的信息。 在 InterSystems 技术和产品领域中,诸如将 Ensemble 或 Health Connect 用作企业服务总线 (ESB) 的项目、使用企业缓存协议 (ECP) 的应用程序服务器或将 Web 服务器与 CSP 网关一起使用,对于这种类型的存储和存储优化的实例类型,以及使用预置和自动化工具来提高有效性和支持弹性的操作来说,都是很好的用例。
有关实例存储卷的详细信息,可以在here 找到。
计算
EC2 实例
有多种实例类型可供使用,它们针对各种用例进行了优化。 实例类型包括 CPU、内存、存储和网络容量的不同组合,从而实现无数种组合来合理调整您的应用程序的资源要求。
就本文档而言,将参考_通用 M4_ Amazon EC2 实例类型作为优化环境大小的方法,这些实例提供 EBS 卷的功能和优化。 根据您的应用程序的容量要求和定价模型,还可能有替代方案。
M4 实例是最新一代的_通用_实例。 此系列提供了计算、内存和网络资源的平衡配置,对于许多应用程序来说是很好的选择。 容量范围为 2 到 64 个虚拟 CPU 和 8 到 256GB 的内存,以及相应的专用 EBS 带宽。
除了各个实例类型,还有分层的分类,例如专用主机、Spot 实例、预留实例和专用实例,每个类别的定价、性能和隔离都不同。
在 here 确认当前可用实例的可用性和详细信息。
可用性和操作
Web/App 服务器负载均衡
您的基于 Caché 的应用程序可能需要外部和内部负载均衡的 Web 服务器。 外部负载均衡器用于通过互联网或 WAN(VPN 或 Direct Connect)进行的访问,内部负载均衡器可用于内部流量。 AWS Elastic Load Balancing 提供两种类型的负载均衡器 – 应用程序负载均衡器和传统负载均衡器。
传统负载均衡器
传统负载均衡器根据应用程序或网络信息对流量进行路由,是在多个需要高可用性、自动扩展和强大安全性的 EC2 实例之间实现简单的流量负载均衡的理想选择。 具体的详细信息和功能可在here 找到。
应用负载均衡器
应用程序负载均衡器是 Elastic Load Balancing 服务的负载均衡选项,该服务在应用程序层运行,允许您根据一个或多个 Amazon EC2 实例上运行的多个服务或容器中的内容定义路由规则。 此外,还支持 WebSockets 和 HTTP/2。 具体的详细信息和功能可在here找到。
示例
在以下示例中,定义了一组三个 Web 服务器,每个服务器都在一个单独的可用区,以提供最高级别的可用性。 必须为 Web 服务器负载均衡器配置粘性会话 ,才能支持使用 cookie 将用户会话固定到特定 EC2 实例的功能。 当用户继续访问您的应用程序时,流量将路由到相同实例。
图 4 给出了 AWS 中的传统负载均衡器的一个简单示例。
图 4:传统负载均衡器示例
数据库镜像
在 AWS 上部署基于 Caché 的应用程序时,如果要为 Caché 数据库服务器提供高可用性,则需要在给定的主 AWS 区域使用同步数据库镜像来提供高可用性,还可能需要使用异步数据库镜像将数据复制到辅助 AWS 区域中的热备份以实现灾难恢复,具体取决于正常运行时间服务水平协议要求。
数据库镜像是两个数据库系统的逻辑分组,也就是所说的故障转移成员,它们在物理上是仅通过网络连接的独立系统。 在这两个系统之间进行仲裁后,镜像会自动将其中一个系统指定为主系统; 另一个成员自动成为备份系统。 外部客户端工作站或其他计算机通过镜像虚拟 IP (VIP) 连接到镜像,该虚拟 IP 在镜像配置期间指定。 镜像 VIP 会自动绑定到主镜像系统上的接口。
注意: 在 AWS 中,无法以传统方式配置镜像 VIP,因此设计了替代解决方案。 不过,镜像可跨子网获得支持。
目前在 AWS 中部署数据库镜像的建议是,在跨越三个不同可用区的同一个 VPC 中配置三个实例(主要、备份、仲裁器)。 这可以确保在任何给定时间,AWS 都将保证可以从外部连接其中的至少两个虚拟机,SLA 达到 99.95%。 这样可以为数据库数据本身提供充分的隔离和冗余。 有关 AWS EC2 服务水平协议的详细信息,可在here 找到。
故障切换成员之间的网络延迟没有硬性上限。延迟增加所产生的影响因应用程序而异。如果故障转移成员之间的往返时间与磁盘写入服务时间相似,则预计不会产生影响。 但是,当应用程序必须等待数据变为持久保存(有时称为日志同步)时,响应时间可能是一个问题。 有关数据库镜像和网络延迟的详细信息,可在here 找到。
虚拟 IP 地址和自动故障转移
大多数 IaaS 云提供商缺乏提供虚拟 IP (VIP) 地址的能力,这种地址通常用在数据库故障转移设计中。 为解决这一问题,Caché、Ensemble 和 HealthShare 中增强了几种最常用的连接方法,尤其是 ECP 客户端和 CSP 网关,从而不再依赖 VIP 功能使它们实现镜像感知。
xDBC、直接 TCP/IP 套接字等连接方法或其他直接连接协议仍需要使用 VIP。 为解决这些问题,InterSystems 数据库镜像技术通过使用 API 与 AWS Elastic Load Balancer (ELB) 进行交互以实现类似 VIP 的功能,使得在 AWS 中为这些连接方法提供自动故障转移成为可能,从而在 AWS 中提供完整而强大的高可用性设计。
此外,AWS 最近推出了一种新类型的 ELB,称为应用程序负载均衡器。 这种类型的负载均衡器在第 7 层运行,支持基于内容的路由,并支持在容器中运行的应用程序。 基于内容的路由对于使用分区数据或数据分片部署的大数据类型项目尤其有用。
与虚拟 IP 一样,这是网络配置的突然变化,不涉及任何应用逻辑,不会向已连接到发生故障的主镜像成员的现有客户端发出正在进行故障转移的通知。 根据故障的性质,这些连接终止的原因可能是故障本身、应用程序超时或错误、新的主镜像实例强制旧的主镜像实例停机,或者客户端使用的 TCP 保持连接定时器过期。
结果,用户可能必须重新连接并登录。 您的应用程序的行为将决定此行为。 有关各种类型的可用 ELB 的详细信息,可在here找到。
AWS EC2 实例对 AWS Elastic Load Balancer 方法的调用
在此模型中,ELB 可以定义一个包含故障转移镜像成员和潜在 DR 异步镜像成员的服务器池,其中只有一个活动条目是当前主镜像成员,或者只定义一个具有单个活动镜像成员条目的服务器池。
图 5:与 Elastic Load Balancer 交互的 API 方法(内部)
当某个镜像成员成为主镜像成员时,会从您的 EC2 实例向 AWS ELB 发出一个 API 调用,以调整/指示新主镜像成员的 ELB。
图 6:使用负载均衡器的 API 故障转移到镜像成员B
如果主镜像成员和备份镜像成员都变得不可用,同一模型也适用于升级 DR 异步镜像成员。
图 7:使用负载均衡器的 API 将 DR 异步镜像成员升级为主镜像成员
按照标准推荐的 DR 过程,上面的图 6 中的 DR 成员升级需要人为决策,因为异步复制可能会造成数据丢失。 不过,一旦执行该操作,就不再需要对 ELB 执行管理操作。 在升级期间调用 API 后,将自动路由流量。
API 详细信息
这个用于调用 AWS 负载均衡器资源的 API 在 ^ZMIRROR 例程中专门定义为以下过程调用的一部分:
$$CheckBecomePrimaryOK^ZMIRROR()
在此过程内,插入您选择的要从 AWS ELB REST API、命令行界面等使用的任何 API 逻辑或方法。 与 ELB 进行交互的一种有效且安全的方法是使用 AWS Identity and Access Management (IAM) 角色,这样不必为 EC2 实例分配长期凭据。 IAM 角色提供了 Caché 可以用来与 AWS ELB 进行交互的临时权限。 有关使用分配给 EC2 实例的 IAM 角色的详细信息,可在 here 找到。
AWS Elastic Load Balancer 轮询方法
2017.1 提供了一种使用 CSP 网关的mirror_status.cxw 页的轮询方法,可以将其用作 ELB 监控每个已添加到 ELB 服务器池的镜像成员运行状况的轮询方法。只有主镜像会响应“SUCCESS”,因而网络流量只定向到活动的主镜像成员。
此方法不需要向 ^ZMIRROR 添加任何逻辑。 请注意,大多数负载均衡网络设备对运行状态检查的频率有限制。 通常,最高频率不少于5秒,这通常是可接受的,可支持大多数正常运行时间服务水平协议。
一个对以下资源的 HTTP 请求将测试本地缓存配置的镜像成员状态。
/csp/bin/mirror_status.cxw
对于所有其他情况,这些镜像状态请求的路径应解析到适当的缓存服务器和命名空间,它们与用于请求实际 CSP 页的缓存服务器和命名空间使用相同的分层机制。
示例:在 /csp/user/ 路径中测试服务于应用程序的配置的镜像状态:
/csp/user/mirror_status.cxw
注意:调用镜像状态检查不消耗 CSP 许可证。
根据目标实例是否为活动的主要成员,网关将返回以下 CSP 响应之一:
** Success (Is the Primary Member)
===============================
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 7
SUCCESS
** Failure (Is not the Primary Member)
===============================
HTTP/1.1 503 Service Unavailable
Content-Type: text/plain
Connection: close
Content-Length: 6
FAILED
** Failure (The Cache Server does not support the Mirror_Status.cxw request)
===============================
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
Connection: close
Content-Length: 6
FAILED
下图说明了各种使用轮询方法的方案。
图 8:轮询所有镜像成员
如上面的图 8 所示,所有镜像成员都在运行,只有主镜像成员向负载均衡器返回“SUCCESS”,因此网络流量将只定向到该镜像成员。
图 9:使用轮询故障转移到镜像成员 B
上图演示了将 DR 异步镜像成员升级到负载均衡池中的过程,这通常假定同一台负载均衡网络设备为所有镜像成员提供服务(本文稍后将介绍按地理位置划分的方案)。
按照标准推荐的 DR 过程,DR 成员升级需要人为决策,因为异步复制可能会造成数据丢失。 不过,一旦执行该操作,就不再需要对 ELB 执行管理操作。 它会自动发现新的主镜像成员。
图 10:使用轮询对 DR 异步镜像成员进行故障转移和升级
备份和还原
备份操作有多个选项。 对于 InterSystems 产品的 AWS 部署,可以使用以下三个选项。 前两个选项包括一个快照类型过程,该过程在创建快照前会暂停将数据库写入磁盘,然后在快照成功建立后恢复更新。 执行以下高级步骤使用任一快照方法创建干净备份:
通过数据库冻结 API 调用暂停对数据库的写入。
创建操作系统和数据磁盘的快照。
通过数据库解锁API 调用恢复 Caché 写入。
将设施存档备份到备份位置。
可以定期添加完整性检查等其他步骤,以确保备份干净一致。 决定使用哪个选项取决于组织的运营要求和策略。 InterSystems 可与您详细讨论各种选项。
EBS 快照
EBS 快照是在高度可用和成本较低的 Amazon S3 存储上创建时间点快照的非常快速且有效的方法。 EBS 快照连同 InterSystems 外部冻结和解锁API 功能,可以实现真正的 24x7 弹性运行,并确保干净的定期备份。 使用 AWS 提供的服务(如 Amazon CloudWatch Events)或市场上的第三方解决方案(如 Cloud Ranger 或 N2W Software Cloud Protection Manager 等等),有许多选项可以使该过程自动化。
此外,还可以使用 AWS 直接 API 调用,以编程方式创建您自己的自定义备份解决方案。 有关如何利用 API 的详细信息,请参见here 和here.
注意:InterSystems 不为上述任何第三方产品背书或明确进行验证。 测试和验证取决于客户.
逻辑卷管理器快照
或者,通过在虚拟机自身内部署单独的备份代理,并利用文件级备份与 Linux 逻辑卷管理器 (LVM) 快照或 Windows 卷影复制服务 (VSS) 相结合,可以使用市场上的许多第三方备份工具。
此模型的主要优点之一是能够对基于 Windows 或 Linux 的实例进行文件级还原。 该解决方案有几点需要注意,由于 AWS 和大多数其他 IaaS 云提供商不提供磁带介质,因此所有备份存储库都基于磁盘进行短期归档,而且能够利用 Amazon S3 低成本存储并最终使用 Amazon Glacier 实现长期保留 (LTR)。 如果使用此方法,强烈建议使用支持去重技术的备份产品,以最有效地利用基于磁盘的备份存储库。
这些具有云支持的备份产品的示例包括但不限于:Commvault、EMC Networker、HPE Data Protector 和 Veritas Netbackup。
注意:InterSystems 不为上述任何第三方产品背书或明确进行验证。 测试和验证取决于客户.
Caché 在线备份
对于小型部署,内置 Caché 在线备份工具也是一个可行选项。 该 InterSystems 数据库在线备份实用工具通过捕获数据库中的所有块来备份数据库文件中的数据,然后将输出写入顺序文件。 这种专有的备份机制旨在使生产系统的用户不停机。
在 AWS 中,在线备份完成后,必须将备份输出文件和系统使用的所有其他文件复制到用作文件共享的 EC2 (CIFS/NFS)。 该过程需要在虚拟机中编写脚本并执行。
在线备份是入门级方法,适合于希望实施低成本备份解决方案的小型站点。 但是,随着数据库的增大,建议将使用快照技术的外部备份作为最佳做法,其优势包括:备份外部文件、更快的恢复时间,以及企业范围的数据视图和管理工具。
灾难恢复
在 AWS 上部署基于 Caché 的应用程序时,建议将 DR 资源(包括网络、服务器和存储)放在不同的 AWS 区域中,或者至少放在单独的可用区中。指定的 DR AWS 区域所需的容量取决于您组织的需求。 在大多数情况下,以 DR 模式运行时需要 100% 的生产能力,但作为一个弹性模型,可以先预置较少的能力,直到需要更多能力。 较少的能力可以体现为较少的 Web 和应用程序服务器,甚至可能使用较小的 EC2 实例类型作为数据库服务器,升级后,EBS 卷将附加到较大的 EC2 实例类型。
异步数据库镜像用于连续复制到 DR AWS 区域的 EC2 实例。 镜像使用数据库事务日志以对主系统性能影响最小的方式通过 TCP/IP 网络复制更新。 强烈建议对这些 DR 异步镜像成员配置日志文件压缩和加密。
公共互联网上所有希望访问应用程序的外部客户端都将通过作为附加 DNS 服务的 Amazon Route53 进行路由。Amazon Route53 用作将流量定向至当前活动数据中心的交换机。 Amazon Route53 执行三种主要功能:
域注册 –允许您注册 example.com 之类的域名。
域名系统 (DNS) 服务 – Amazon Route53 将类似 www.example.com 的友好域名转换为 192.0.2.1 之类的 IP 地址。 Amazon Route53 使用全球权威 DNS 服务器网络来响应 DNS 查询,从而降低延迟。
运行状况检查–Amazon Route53 通过互联网向您的应用程序发送自动请求,以验证其是否可达、可用和正常运行。
这些功能的详细信息可在 here找到。
就本文档而言,将讨论 DNS 故障转移和 Route53 运行状况检查。 运行状况检查监控和 DNS 故障转移的详细信息可在 here 和here找到。
Route53 的工作方式是向每个端点发出常规请求,然后验证响应。 如果某个端点未能提供有效响应, 它将不再包含在 DNS 响应中,而是返回一个替代的可用端点。 这样,用户流量就会从发生故障的端点转向可用的端点。
使用上述方法,将只允许流量转向特定区域和特定镜像成员。 这是由端点定义控制的,它是本文先前讨论过的 mirror_status.cxw 页,由 InterSystems CSP 网关提供。 只有主镜像成员会在运行状况检查中报告 HTTP 200 来表示“SUCCESS”。
下图演示了高级别的故障转移路由策略。 此方法和其他策略的详细信息可在here找到。
图 11:Amazon Route53 故障转移例程策略
在任何给定时间,只有一个区域会根据端点监控进行在线报告。 这样可以确保流量在给定时间只流向一个区域。 区域之间的故障转移无需增加步骤,因为端点监控将检测到指定的主 AWS 区域中的应用程序已关闭,并且该应用程序此时在次要 AWS 区域中处于活动状态。 这是因为 DR 异步镜像成员已被手动升级为主镜像成员,随后允许 CSP 网关将 HTTP 200 报告给 Elastic Load Balancer 端点监控。
上述解决方案有很多替代方案,可以根据您组织的运营要求和服务水平协议进行自定义。
监控
Amazon CloudWatch 可用于为您的所有 AWS 云资源和应用程序提供监控服务。 Amazon CloudWatch 可用于收集和跟踪指标,收集和监控日志文件,设置警报,并自动对 AWS 资源的变化做出反应。 Amazon CloudWatch 可以监控 AWS 资源,如 Amazon EC2 实例,以及您的应用程序和服务生成的自定义指标,还有您的应用程序生成的任何日志文件。 您可以使用 Amazon CloudWatch 获得系统范围内的资源利用率、应用程序性能和运行状况的可见性。 详细信息可在here找到。
自动预置
目前,市场上有许多工具,包括 Terraform、Cloud Forms、Open Stack 和 Amazon 自己的 CloudFormation。 使用这些工具并与其他工具(如 Chef、Puppet、Ansible 等)相结合,可以提供完整的基础设施即代码,来支持 DevOps 或简单地以完全自动化的方式引导您的应用程序。 Amazon CloudFormation 的详细信息可在here找到。
网络连接
根据您的应用程序的连接要求,有多种连接模型可用:使用互联网、VPN 或使用 Amazon Direct Connect 的专用链接。 选择方法取决于应用程序和用户需求。 三种方法的带宽使用情况各不相同,最好通过 AWS 代表或 Amazon 管理控制台确认给定区域的可用连接选项。
安全
当决定通过任何公共 IaaS 云提供商部署应用程序时,都需要谨慎。 应遵循您组织的标准安全策略或专门针对云制定的新策略,以保持您组织的安全合规性。 当组织的数据存储在其国家/地区之外,并受数据所在国家/地区的法律约束时,相关的数据主权也是您必须了解的。 现在,云部署增加了数据在客户数据中心和物理安全控制之外的风险。 强烈建议对静态数据(数据库和日志)和动态数据(网络通信)使用 InterSystems 数据库和日志加密,分别使用 AES 和 SSL/TLS 加密。
与所有加密密钥管理一样,您需要按照您组织的策略记录并遵循正确的程序,以确保数据安全,防止不必要的数据访问或安全漏洞。
Amazon 提供了大量文档和示例,为基于 Caché 的应用程序提供高度安全的运行环境。 请务必查看here 关于 Identity Access Management (IAM) 的各种讨论主题。
架构图示例
下图说明了典型的 Caché 安装,其以数据库镜像(同步故障转移和 DR 异步)、使用 ECP 的应用程序服务器,以及多个负载均衡 Web 服务器的方式提供高可用性。
TrakCare 示例
下图说明了典型的 TrakCare 部署,其中包含多个负载均衡 Web 服务器,两个作为 ECP 客户端的 EPS 打印服务器,以及数据库镜像配置。 虚拟 IP 地址仅用于与 ECP 或 CSP 网关不关联的连接。 ECP 客户端和 CSP 网关可感知镜像,不需要 VIP。
如果您正在使用 Direct Connect,则可为灾难恢复方案启用包括多线路和多区域访问在内的多个选项。 与电信提供商合作以了解他们支持的高可用性和灾难恢复方案至关重要。
下面的示例参考架构图包括活动或主要区域中的高可用性,以及在主要 AWS 区域不可用时到其他 AWS 区域的灾难恢复。 而且在此示例中,数据库镜像包含 TrakCare DB、TrakCare Analytics 和 Integration 命名空间,全部在单个镜像集内。
图 12:TrakCare AWS 参考架构图 – 物理架构
此外,下图显示了更有逻辑的架构图,其中包含所安装的相关高级软件产品及功能用途。
图 13:TrakCare AWS 参考架构图 – 逻辑架构
HealthShare 示例
下图显示了一个典型的 HealthShare 部署,其中含有多个负载均衡 Web 服务器,以及多个 HealthShare 产品,包括 Information Exchange、Patient Index、Personal Community、Health Insight 和 Health Connect。 这些产品中的每一个都包含一个数据库镜像对,以在多个可用区内提供高可用性。 虚拟 IP 地址仅用于与 ECP 或 CSP 网关不关联的连接。 用于 HealthShare 产品之间的 Web 服务通信的 CSP 网关可感知镜像,不需要 VIP。
下面的示例参考架构图包括活动或主要区域中的高可用性,以及在主要区域不可用时到其他 AWS 区域的灾难恢复。
图 14:HealthShare AWS 参考架构图 – 物理架构
此外,下图显示了更有逻辑的架构图,其中包含所安装的相关高级软件产品、连接要求和方法,以及相应的功能用途。
Figure-15: HealthShare AWS 参考架构图 – 逻辑架构
公告
Jeff Liu · 五月 23, 2021
InterSystems API Manager (IAM)的2.3版本的正式版本已经发布。
IAM的容器,包括从IAM早期版本升级的所有相关工件,可以从。WRC软件分发站点 的组件区下载.
这个版本的构建号是IAM 2.3.3.2-1。
这个版本是基于Kong企业版2.3.3.2。
InterSystems API Manager 2.3使其更容易以安全的方式和高可用性的场景进行部署 它有许多新的功能,包括:
引入了混合模式
更广泛地支持Docker Secrets
混合模式允许你在数据面和控制面部署IAM节点。当数据平面处理API流量时,控制平面用于配置数据平面节点并观察来自数据平面的遥测数据。这赋予了部署更多的灵活性,减轻了部署HA场景的工作量。关于混合模式的更多信息可以在[这里](https://docs.konghq.com/enterprise/2.3.x/deployment/hybrid-mode/)找到。在接下来的日子里,InterSystems开发者社区也将更详细地介绍这一功能。
IAM 2.3的文档可以在 这里找到。该文档只涉及IAM特有的元素。产品中的文档链接将用户直接带到Kong Enterprise的文档。
从IAM 1.5.0.9升级需要通过两个中间版本进行增量升级,这在文档中会有更详细的描述。
IAM仅以OCI(Open Container Initiative)又称Docker容器格式提供。容器镜像可用于Linux x86-64和Linux ARM64的OCI兼容运行时引擎,详见 支持平台文件。
Best Regards,
Stefan
公告
Louis Lu · 十二月 16, 2021
InterSystems IRIS、IRIS for Health 以及 HealthShare Health Connect 的 2021.2 版本的预览版现已发布。
由于这是一个预览版,我们希望在下个通用版本发布之前了解您对这个新版本的体验。请通过开发者社区分享您的反馈,以便我们能够共同打造一个更好的产品。
InterSystems IRIS 数据平台 在 2021.2 版本中使开发、部署和管理用于连接数据、应用孤岛的增强型应用和业务流程变得更加容易。它有许多新的功能,包括:
为应用程序和界面开发人员提供的增强功能:
嵌入式Python
使用 Python 进行的互操作性Production开发
对Visual Studio Code ObjectScript扩展包的更新
增加了新的商业服务和操作,允许用户用最少的自定义编码来设置和运行SQL查询
对数据分析和人工智能的增强:
新的SQL LOAD命令有效地将CSV和JDBC源的数据加载到表中
增强自适应分析功能
对云和云上运营任务的增强:
新的云连接器使得在 InterSystems IRIS 应用程序中访问和使用云服务变得简单。
IKO的改进提高了Kubernetes 资源的可管理性
针对数据库和系统管理员的增强功能:
在线分片再平衡可以在不中断操作的情况下自动在各节点间分配数据
自适应 SQL 引擎使用快速块采样和自动化来收集高级表的统计数据,并利用运行时信息来改进查询规划
通过新的流类型数据和日志文件压缩设置,减少InterSystems IRIS的存储需求
使用系统提供的库,支持 TLS 1.3 和 OpenSSL 1.1.1
新的^TRACE工具报告详细的进程统计数据,如缓存点击率和读取率
关于所有这些功能的更多细节可以在产品文档中找到。
InterSystems IRIS 2021.1文档和发布说明
InterSystems IRIS for Health 2021.1 文档和发布说明
HealthShare Health Connect 2021.1 文档和发布说明
InterSystems IRIS 2021.2是一个持续交付(CD)版本,现在为所有支持的平台提供经典安装包,以及OCI(Open Container Initiative)又称Docker容器格式的容器镜像。 容器镜像可用于符合OCI标准的Linux x86-64和Linux ARM64的运行时引擎,详见支持平台。
每个产品的完整安装包都可以从WRC的产品下载网站获得。使用 "自定义 "安装选项,用户可以选择他们需要的选项,如 InterSystems Studio 和IntegratedML,以合理地缩小安装内容。
安装包和预览密钥可以从WRC的预览下载站点获得。
企业版、社区版和所有相应组件的容器镜像可以通过以下命令从 InterSystems容器注册中心获得。
docker pull containers.intersystems.com/intersystems/iris:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/iris-ml:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/irishealth:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.2.0.617.0
关于可用镜像的完整列表,请参考ICR文档。
另外,所有容器镜像的tarball版本可以通过WRC的预览版下载网站获得。
该预览版的构建号是2021.2.0.617.0。
文章
Claire Zheng · 十二月 13, 2021
我在 InterSystems 工作了 35 年,期间见证了许多客户与我们共同成长。我们热忱地帮助客户取得成功——无论他们衡量成功的标准是什么——而成功的基石就是我们提供的技术。我们的名字现在通常与我们的 InterSystems IRIS 数据平台联系在一起,因为它实际上是我们经过验证的下一代数据管理软件。
在InterSystems IRIS 之前,我们以 Caché 和Ensemble 的强大功能而闻名,全球许多最重要的应用都是在它们的帮助下得以面世的。如果您也是我们的Caché 或 Ensemble 客户,这些平台如今无疑是您组织基础设施的重要组成部分,是一些优秀应用的基础。
然而,正如我们不断发展我们的技术,我们也希望帮助您发展现有技术,并使您能够利用最新的数据平台技术——即从人工智能(AI) 到云计算的各种最新技术。我们认为 InterSystems IRIS 的时代已来临,因此,我们将为所有现有的 Caché 和Ensemble 客户提供限时免费迁移到InterSystems IRIS 数据平台的机会。
我们理解,对业已成为您业务重要组成部分的现有解决方案进行任何更改,都将是一项艰巨的任务,但请相信我们,这一切都是值得的。我们的一面之词也许不足为信,但我们现有的许多客户已经做出了这样的转变,其中包括医疗软件公司Epic。
作为一个使用我们技术超过 40 年的忠实客户,Epic 去年决定迁移到InterSystems IRIS。其系统拥有 250 万并发用户,每秒处理大约 18 亿次数据库访问,因此,能够平稳迁移至关重要。通过我们的共同努力,迁移非常顺利。现在Epic 的客户体验到了更高的性能和更佳的可扩展性。
在此列举部分迁移到InterSystems IRIS 可拥有的优势:
更高的性能、可扩展性和资源效率
通过迁移,您将能够以小博大,用更少的资源做更多的事情,并同时管理多种不同类型的工作负载。为了让您更好地理解这一所指,我们通过速度测试(Speed Test)得出,与其他主流数据管理软件相比,InterSystems IRIS 在测试期间多摄取了 620.9% 的记录,在测试结束时多摄取了 717.3% 的记录。
开发人员生产力
InterSystemsIRIS 具有化繁为简的功能。您的开发人员可以在一个平台内构建和测试所有应用,现在使用嵌入式Python,您可以访问更大的开发资源池,以及数十万个可用的Python 库。从而让开发周期更短,控制和管理更简单。
云部署
作为一个“云中立”的平台,InterSystemsIRIS 不会将您与任何云供应商绑定。因此更加经济、高效和敏捷。
机器学习
我们的IntegratedML 功能为创建机器学习 (ML) 模型提供了一种简单的机制,让您更轻松地将 ML 模型实施到您的实时应用中。
Adaptive Analytics自适应分析
利用新的自适应分析 (Adaptive Analytics) 功能,您的组织无需依赖IT,即可更轻松地探索和分析数据。这意味着业务用户将能够获得他们所需的洞察力,从而做出明智的业务决策,并使您的 IT 团队专注于其他工作。
互操作性和 API 管理能力
通过迁移,您可以实时获得所有数据的统一视图。利用我们的数据平台,您可以连接不同的系统、技术和数据,为您的业务用户创建单一虚拟管理界面,或为您的企业应用创建实时连接。
轻松实现迁移
迁移到InterSystems IRIS 的理由,除了上述这些之外,还有很多。
如果您准备迁移到 InterSystems IRIS(已有数百个 Caché和 Ensemble 客户成功迁移),您可以登录www.intersystems.com/migrate了解更多关于如何迁移到 InterSystems IRIS 上的信息。
原文:Unleashing InterSystems IRIS: Why it’s time to migrate your Caché and Ensemble applications
关于作者
John Paladino负责InterSystems的支持、质量保证、内部计算机操作及客户教育工作。自1984年加入InterSystems以来,他帮助开发了自动化支持跟踪系统和针对所有InterSystems软件产品的客户培训项目,制定并实施了旨在改善响应性、提高客户满意度的服务标准,以及多个国内外团队建设计划。在加入InterSystems之前,他曾在New England Pathology担任了三年的系统工程经理,负责获取、实施和管理各类信息技术。Paladino曾在伍斯特理工学院和马萨诸塞大学卢维尔分校攻读电机工程专业。