
云原生开发
文章平均质量分 70
云原生开发相关理论和技术介绍
汪子熙
18年深耕企业管理软件领域,精通 ABAP, Java, Javascript, Typescript, 精通 UI5, Fiori, Fiori Element, Angular, Kubernetes, SAP HANA, SAP BTP. 具有通过阅读 Github 上各种优秀的开源框架和工具源代码的习惯,对于我来说阅读源代码,就像阅读中国白话文一样轻松自然。
展开
-
什么是 Orchestrator Deployment Platform 及其使用场景
Orchestrator Deployment Platform(简称 Orchestrator)是一个复杂的软件框架或系统,专注于管理和自动化分布式应用程序的部署、运行以及运维工作。它的核心功能是协调不同组件的部署顺序、监控系统状态,并在发生故障时迅速恢复,从而确保应用程序在复杂环境中的高效运行。这种平台的主要设计理念源于现代分布式系统和云计算的需求。在云原生架构中,应用程序通常是由多个微服务组成,每个服务可能运行在不同的主机或容器中,甚至可能在不同的地理位置部署。原创 2024-12-20 10:41:45 · 652 阅读 · 0 评论 -
什么是云原生应用运维领域的 SRM 团队
SRM,即 Site Reliability Management,是在云原生应用的运维(Operation)中扮演重要角色的团队之一。它的概念源自于 SRE(Site Reliability Engineering),但在职责上有所区别。SRM 更加注重运营管理、策略性决策以及对整个系统可靠性的持续优化。对于理解 SRM 团队的工作职责,需要从云原生环境的特性、运维管理需求、团队职责分工等多个角度进行详细剖析。原创 2024-11-11 19:05:29 · 606 阅读 · 0 评论 -
Node.js 应用中出现 high event loop utilization 现象的原因
High event loop utilization”(事件循环利用率过高)是一种描述事件循环忙碌程度的现象。在高事件循环利用率的情况下,事件循环的空闲时间非常少或者几乎没有空闲时间,这意味着 Node.js 的主线程在大部分时间里处于忙碌状态,几乎无法处理新的任务或响应外部请求。这会导致应用性能下降,出现响应延迟增大甚至无法处理新请求的情况。事件循环利用率高低的测量方法,通常通过计算事件循环在每次轮询阶段所花费的时间,以及事件循环的等待时间和空闲时间。原创 2024-11-11 19:00:29 · 768 阅读 · 0 评论 -
什么是 Verdaccio
Verdaccio 是一个开源的轻量级私有 npm 仓库代理工具。简单来说,它允许开发者在本地建立并管理一个 npm 私有仓库,用来缓存公开 npm 包,或者发布和存储私有 npm 包。这个工具特别适用于需要创建局部包管理环境的公司或团队,可以大大提高开发效率。Verdaccio 的最初目的是提供一种简单而高效的方式来在本地搭建 npm 仓库,帮助开发者摆脱对官方 npm registry 的完全依赖。这样一来,团队可以确保开发过程中的私有代码安全性,同时减少对外部网络环境的依赖。原创 2024-11-07 17:06:41 · 1017 阅读 · 0 评论 -
什么是 Dynatrace 里的 Opaque Service
在 Dynatrace 中,当某个服务由于某些原因变得无法完全被监控,它就会被归类为 Opaque Service。外部 API 调用:如果服务通过外部 API 进行调用,而这些 API 并未被 Dynatrace 直接监控,则该服务可能被视为不透明的。例如,如果你的应用程序调用了一个第三方支付接口,但是该第三方服务没有安装 Dynatrace 探针,或者该 API 使用了自定义加密的方式,这使得 Dynatrace 无法获取调用的详细信息。基于消息队列的服务。原创 2024-11-07 17:04:55 · 427 阅读 · 0 评论 -
什么是 Vertex AI Vector Search
通过将数据转换为向量表示,并利用高效的索引和查询机制,开发者可以构建高性能的搜索和推荐系统,提升用户体验。系统可以利用 Vertex AI Vector Search 查找与该连衣裙相似的商品,如其他颜色的同款连衣裙或风格相近的服饰,从而为用户提供个性化的推荐。向量搜索的核心在于将数据表示为向量,并通过计算向量之间的相似度来查找相似项。:当用户浏览某商品时,系统将该商品的向量与索引中的向量进行比较,找到相似的商品并推荐给用户。:常用的度量方式包括点积距离、欧氏距离等,用于衡量向量之间的相似度。原创 2024-11-01 15:29:57 · 342 阅读 · 0 评论 -
什么是 BigQuery ML
BigQuery ML 在这种基础架构之上,扩展了 SQL 的能力,使得机器学习的模型训练过程被高度并行化,分布在多台服务器上进行,从而显著提升了效率。通过扩展 SQL 的能力,BigQuery ML 可以让开发者和数据分析师使用简单明了的语句直接完成模型的创建、训练和预测任务,避免了传统机器学习中复杂的编程和数据处理步骤。对于数据量庞大的情况,传统方法可能需要几小时甚至几天的时间进行模型训练,而在 BigQuery ML 中,由于数据无需离开数据仓库,整个过程的效率得到了显著的提高。原创 2024-11-01 15:25:52 · 431 阅读 · 0 评论 -
什么是云计算领域中的 inference request 概念
在深入探讨云计算领域中的概念之前,让我们先对云计算本身有个基础的理解。云计算是一种提供共享计算资源(如服务器、存储、数据库、网络、软件、分析和智能)的技术,使得用户可以通过互联网按需获取和使用这些资源,从而优化成本、提高效率和灵活性。在这个广阔的领域中,是一个非常关键的概念,特别是在涉及到机器学习和人工智能(AI)应用的云服务中。,或者说推理请求,指的是向一个训练好的机器学习模型发送输入数据,以获得预测或决策结果的过程。原创 2024-02-21 20:13:36 · 375 阅读 · 0 评论 -
运行在Docker里的SpringBoot应用,如何查看记录在文件系统的日志
我有一个SpringBoot应用,将其打包在一个Docker镜像里。DockerFile如下:FROM openjdk:8-jdk-alpineVOLUME /tmpVOLUME /logADD target/prolikeService.jar app.jarENV JAVA_OPTS=""ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar...原创 2020-02-10 21:41:00 · 2972 阅读 · 1 评论 -
使用JPA + Eclipselink操作PostgreSQL数据库
首先确保您已经安装了PostgreSQL。您可以参考我这篇文章PostgreSQL扫盲教程。使用Eclipse创建一个新的JPA project:Platform选择EclipseLink,作为JPA的provider之一。在Eclipse里自动生成的project如下图所示:用下列xml的内容覆盖自动生成的xml:<?xml version="1.0" ...原创 2018-05-02 12:19:37 · 613 阅读 · 0 评论 -
PostgreSQL扫盲教程
在这个链接下载PostgreSQL。安装时,请记住您给user postgres设置的初始密码,以及默认端口号5432,后面需要使用。再安装图形化管理UI pgadmin,可以从这个链接获得。安装完毕之后,登录pgadmin,将服务器connection里的port修改成默认的5432:成功连接上服务器,之后新建一个Table:给该table维护三列:使...原创 2018-05-02 12:20:11 · 552 阅读 · 0 评论 -
使用SAP云平台 + JNDI访问Internet Service
以Internet Service http://maps.googleapis.com/maps/api/distancematrix/xml?origins=Walldorf&destinations=Berlin为例,在浏览器里访问这个url,得到输出:从Walldorf到Berlin的距离。如何让一个部署到SAP云平台的Java应用也能访问到该internet se...原创 2018-05-12 16:00:49 · 520 阅读 · 0 评论 -
SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
Message server for ABAP NetweaverSAP传统应用经典的三层架构:起到负载均衡的消息服务器(Message Server)在图中没有得到体现。然后,消息服务器在我们每天用SAPGUI工作中扮演着重要的角色。比如Jerry做CRM开发用的系统AG3,消息服务器维护如下:使用事务码SMLG,发现AG3由三台不同的应用服务器组成,编号分别为54,55...原创 2018-06-01 22:21:29 · 634 阅读 · 0 评论 -
如何处理CloudFoundry应用部署时遇到的254错误
使用SAP云平台的CloudFoundry部署应用: 在cockpit遇到错误信息:instance: a0abe2b5-7623-4cf1-4c65-0c79, index: 0, exit_description: APP/PROC/WEB: Exited with status 254, reason: CRASHED 使用命令查看部署日志: cf logs connect...原创 2018-06-01 22:29:56 · 523 阅读 · 0 评论 -
SAP云平台CloudFoundry中的用户自定义变量
CloudFoundry应用的manifest.xml里的env区域,允许用户自定义变量,如下图5个变量所示。 使用cf push部署到CloudFoundry之后,在SAP Cloud Platform Cockpit的User-Provided Variables标签页里能看到这5个用户自定义的变量。通过点击“Add Varible”按钮能在Cockpit里直接添加新的环境变量。下图我添...原创 2018-06-10 15:31:05 · 500 阅读 · 0 评论 -
WebClient UI和Tomcat的启动器
WebClient UI我们在WebClient UI的开发工具里点了Test按钮, 会在浏览器以测试模式打开选中的view。这背后发生了什么事?注意浏览器地址栏的bspwd_cmp_test,这是什么东西?Jerry倾向于把它当作是CRM WebClient UI component在测试模式下的启动器。 当我们以测试模式打开一个CRM WebClient UI componen...原创 2018-06-19 22:45:00 · 341 阅读 · 0 评论 -
如何处理 SAP 云平台错误消息 there is no compute unit quota for subaccount
当我试图部署一个应用到SAP云平台的neo环境时: 指定Compute Unit Size为Lite: 点击Deploy按钮,遇到如下错误消息:there is no compute unit quota for subaccount: 解决方案使用命令行neo set-quota –account wc4e460ce –user i042416 –host int.sa...原创 2018-06-19 22:48:15 · 475 阅读 · 0 评论 -
SAP云平台架构概述
在我们开始SAP云平台的架构之旅之前,让我们先看看SAP已经发布的一些其他云产品。这些云产品方案可以分为公有云和私有云两种。SAP公有云解决方案见下图最右侧,比较著名的有SAP SuccessFactors和SAP Cloud for Customer(C4C)等,作为SAP软件即服务(SaaS)的解决方案。 以SAP C4C为例,软件应用和计算资源均由SAP提供,部署于SAP的数据中心...原创 2018-08-29 12:09:39 · 7851 阅读 · 1 评论 -
推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
我们在本地启动Tomcat服务器后,用localhost:<默认端口>访问:再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用。可以看到在Manager应用里提供的功能是很有限的。最近我在github上找到一个功能强大的Tomcat 管理监控工具,可以用来替代Tomcat默认的Manager应用:https...原创 2018-09-09 11:18:44 · 15442 阅读 · 3 评论 -
在云环境上使用SLF4J对Java程序进行日志记录
我开发了一个Java应用,部署到云环境上之后,用postman测试发现不能按照我期望的工作,但是返回的消息对我没有任何帮助。因为部署在云端的应用很难像本地Java应用一样调试,所以我打算用SLF4J在Java代码里添加一些日志,然后查看该Java应用在云端执行产生的日志来排查问题。SLF4J的全称是Simple Logging Facade for Java, 即简单日志门面,这里的F...原创 2018-09-10 21:20:15 · 299 阅读 · 0 评论 -
最简单的教程:在Ubuntu操作系统里安装Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。今天这篇文章咱们就来将Docker安装到Ubuntu上。1. 由于Ubuntu里apt官方库里的docker版本可能比较低,因此先用下面的命令行卸载旧版本(如果有的话)sudo ap...原创 2018-09-17 12:18:33 · 1079 阅读 · 0 评论 -
MongoDB最简单的入门教程之二 使用nodejs访问MongoDB
在前一篇教程 MongoDB最简单的入门教程之一 环境搭建* 里,我们已经完成了MongoDB的环境搭建。*在localhost:27017的服务器上,在数据库admin下面创建了一个名为person的数据库表,并插入了两条记录:上图是用MongoDB Compass查看的成功插入的两条记录。下面我们用nodejs读取这两条记录。首先在命令行里执行npm i...原创 2018-09-17 12:19:42 · 357 阅读 · 0 评论 -
MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据
前两篇教程我们介绍了如何搭建MongoDB的本地环境:MongoDB最简单的入门教程之一 环境搭建以及如何用nodejs读取MongoDB里的记录:MongoDB最简单的入门教程之二 使用nodejs访问MongoDB这篇教程我们会介绍如何使用Java代码来连接MongoDB。如果您是基于Maven进行依赖管理的Java项目,只需要在您的pom.xml里加入下面的依赖定义,...原创 2018-09-17 12:20:17 · 4001 阅读 · 1 评论 -
MongoDB最简单的入门教程之五-通过Restful API访问MongoDB
通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到MongoDB中,并通过MongoDB Compass查看到了插入的数据。MongoDB最简单的入门教程之一 环境搭建MongoDB最简单的入门教程之二 使用nodejs访问MongoDBMongoDB最简单的入门教程之三 使用Java代码往MongoDB...原创 2018-09-19 11:56:25 · 1679 阅读 · 1 评论 -
Docker Hello World容器运行报错的解决办法
费了好大力气从Docker官网下载了Docker Community Editor的安装镜像,Docker.dmg, 总共将近500MB,双击进行安装:命令行里使用docker version查看版本:然后使用命令行docker run hello-world,遇到错误信息:Error response from daemon: unauthorized: incorrect userna...原创 2018-10-03 22:19:12 · 2674 阅读 · 0 评论 -
MongoDB最简单的入门教程之一 环境搭建
MongoDB是近年来非常流行的一个介于关系数据库和非关系数据库之间的解决方案,特别广泛地应用于国内很多互联网公司,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB支持的数据结构非常松散,是类似json的bson格式,这种灵活的格式使得MongoDB可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言(Query Language)非常强大,其语法有点类似于面向对象...原创 2018-09-19 11:57:07 · 1205 阅读 · 0 评论 -
如何在腾讯云上安装Cloud Foundry
Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。云服务器(Cloud Virtual Machine)是一种专业的高性能高稳定的弹性伸缩的计算服务,您可以在几分钟内轻松获取并配置您的CVM计算实例。云服务器不仅提供了镜像复制、快照备份、弹性...原创 2018-10-01 22:26:26 · 595 阅读 · 0 评论 -
CloudFoundry命令行和Kubernetes命令行的Restful API消费方式
先说CloudFoundry的命令行工具CLI。我们在CloudFoundry环境下工作,第一个使用的命令就是cf login。如果在环境变量里维护CF_TRACE的值为true:则我们能发现,诸如cf login这种命令,实际上也是通过消费Restful API来完成的。下图是cf login这个命令的api endpoint请求细节,供大家参考:API endpoint: http...原创 2018-10-09 17:59:02 · 483 阅读 · 0 评论 -
虚拟机和Docker的最大区别
使用Vagrant和KVM 或者Hyper-V我们可以构建和运行虚拟机。相关的工具比如 ansible, chef 或者puppet可以用来进行环境的设置和配置。虚拟机和Docker都能够给一台宿主机上的应用提供隔离的运行环境。区别是什么呢?从上图右边虚拟机架构图能看出,虚拟机里在宿主操作系统和物理硬件之间多了一个中间层:Hypervisor。Hypervisor是一种运行在物理服务器和...原创 2018-11-13 19:29:25 · 6426 阅读 · 2 评论 -
删除所有正在运行和退出的docker实例
docker ps -a能显示所有docker实例的状态,包含已经退出了的:加上-q参数,只显示container id使用这个命令,把docker ps -aq产生的输入作为输入传入到docker rm命令,达到删除所有容器实例的效果。docker rm $(docker ps -aq)...原创 2018-11-23 10:45:03 · 2877 阅读 · 1 评论 -
用一个实际例子理解Docker volume工作原理
要了解Docker Volume,首先我们需要理解Docker文件系统的工作原理。Docker镜像是由多个文件系统的只读层叠加而成。当一个容器通过命令docker run启动时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,但是该文件的只读版本依然存在,只不过已经被读写层中该文件的副本所隐藏。...原创 2018-11-23 11:11:45 · 478 阅读 · 1 评论 -
最简单的docker教程:在docker里运行nginx服务器
命令行docker search nginx搜索名为nginx的docker image,返回结果的第一个,github上有10293个star,这就是我们想要搜索的结果:使用命令docker pull把这个镜像拖下来:docker pull nginx然后以detach模式运行这个镜像:docker run -d --name jerry-nginx nginxdocker ru...原创 2018-11-23 11:14:14 · 2444 阅读 · 1 评论 -
最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像
我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包。比如我机器上docker images返回的这些基于nginx的镜像,每个都超过了100MB,而一个简单的Ubuntu的容器超过了200MB,如果安装了相关的软件,尺寸会更大。如果我们的需求是在构建一个符合我们实际业务...原创 2018-11-27 22:13:16 · 6076 阅读 · 1 评论 -
Docker入门系列之一:在一个Docker容器里运行指定的web应用
实现题目描述的这个需求有很多种办法,作为入门,让我们从最简单的办法开始。首先使用命令docker ps确保当前没有正在运行的Docker实例。运行命令docker run -it nginx:然后我们另外开一个终端,用docker ps命令查看这个运行起来的容器实例,Status的Up 54 seconds意思是从该实例启动到现在已经经过了54秒。使用命令进入这个容器实例:docke...原创 2018-11-30 14:56:29 · 1076 阅读 · 1 评论 -
Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像。Docker入门系列之一:在一个Docker容器里运行指定的web应用Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像本文我们会介绍如何将这个本地制作好的镜像发布到docker hub,让全世界其他docker爱好者能够使用...原创 2018-12-01 11:06:33 · 847 阅读 · 1 评论 -
Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像
在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里,我们已经成功地将我们在本地开发的一个web应用部署到Docker容器里运行。本文将介绍如何制作一个包含了这个web应用的Docker镜像。镜像制作好之后,互联网上的任何其他用户都可以很方便地将您的镜像下载并运行。新建一个文件夹jerry-build, 将您的web应用放到这个文件夹里,我的web应用放...原创 2018-12-01 11:06:55 · 784 阅读 · 1 评论 -
一步步在Docker里运行Web应用
有很多种办法可以把github里的资源下载到Docker容器内部这个指定的目录下, 这里Jerry用一种我觉得最简单的方式,即通过Docker Volume技术将宿主机上的某个目录A以Volume的方式挂接到容器内部的html文件夹上,这样我们直接把github仓库上的webapp文件夹下载到。到目前为止这个本地docker实例是没有办法给其他人使用的,为此我们得先利用dockerfile制作一个包含了UI5应用的docker镜像,上传到docker hub上,以便其他人下载。原创 2018-12-07 14:03:42 · 989 阅读 · 1 评论 -
如何远程调试部署在CloudFoundry平台上的nodejs应用
网络上关于如何本地调试nodejs应用的教程已经很多了,工具有Chrome开发者工具,Visual Studio Code,和nodejs周边的一些小工具等等。在实际情况中,我们可能遇到本地运行良好,但是部署到CloudFoundry生产环境后的情况,此时就需要直接调试在CloudFoundry处于运行状态的nodejs应用了。本文介绍详细步骤。首先我们得有一个在CloudFoundry上正常...原创 2019-05-31 22:56:48 · 363 阅读 · 0 评论 -
使用SSH命令行远程登录运行在CloudFoundry上的应用
当我试图用如下命令行采用SSH远程登录到运行在CloudFoundry环境下的应用时,cf ssh -N -T -L 9229:127.0.0.1:9229 jerry-demo-server遇到这个错误消息:ssh: unable to authenticate, attempted methods [none password], no supported methods rema...原创 2019-05-31 22:58:55 · 1130 阅读 · 0 评论 -
介绍一个免费的云开发工具:Cloud Shell
上周和一德国同事吹牛的时候,他说最近业余时间在玩一个东东,叫做Cloud Shell,Google出品。Jerry之前听说过国内的阿里云也提供过类似的解决方案,即在云端提供一个受限制的Linux环境并可以通过浏览器访问。这次听同事描述这个Google Cloud Shell的用户体验很好,抱着试一试的想法,Jerry也体验了一番,发现使用步骤确实非常简单,这里分享给国内的朋友们。搜索引擎里搜索G...原创 2019-11-11 13:26:30 · 7121 阅读 · 1 评论