首页 文章 精选 留言 我的

精选列表

搜索[devops],共3911篇文章
优秀的个人博客,低调大师

从 DevOps 到 NoOps,Serverless 技术的落地方式探讨

Serverless 技术正以一种全新的方式,帮助云上客户进一步节省云的使用成本,实践 NoOps 理念,同时,他也正深刻变革着开发者们的编程模式,所谓“Write locally, compile to the cloud”。 本文将介绍 Serverless 技术来降低云的使用成本和提升运维效率的业务背景和由来,并结合 Serverless 应用引擎(SAE)这款产品来呈现 Serverless 技术的落地方式。 云上业务开发和运维现状 目前,很多客户的上云仍处于资源云化的阶段,以降低资源购置成本为主要驱动力,应用运行在到虚拟化环境中,应用的开发和运维还需要消耗大量的人力。 如上图,在这种模式下,客户除了要完成业务逻辑开发外,还需要完成以下工作: 评估系统容量:包括系统总访问量、平均访问量、压测找出单机 QPS、线上冗余情况等等,整个容量评估工作是一个十分复杂的过程; 准备基础设施:包括网络拓扑规划,以及ECS 虚拟机资源、外网访问入口SLB、存储资源RDS、NAT等云产品的购买; 应用部署:对虚拟机资源进行初始化,需要手动或自建自动化部署流程完成应用部署;如果是微服务形态的应用,还需要考虑注册中心和服务之间的依赖关系管理; 系统运维:需要进行系统监控、应用监控,并对异常情况报警,并自建运维体系和运维工具。 痛点分析 系统上线后,随着用户越来越多,系统承载的流量也会越来越大。流量可能会出现规律性的波峰和波谷,也有可能会出现突发大流量的场景,当流量陡增将要或已经超出系统承受能力时,需要系统扩容,而扩容是需要按照容量评估、准备云上资源、应用部署几个流程重新操作一遍,效率较低,可能扩容完成时流量波峰已经过去了,还有可能出现因系统资源不足而造成的系统不可用。当系统流量再正常到正常水位,又会出现资源利用率低的问题,再相应的进行缩容,但缩容的时机很难把握,势必会造成一定的闲置资源的浪费。 那我们期望的系统反馈是什么样的呢? 如上图,我们期望的是,资源需求和实际的资源使用量走势能有一个很好的拟合,能够从容应对突发流量,并且能够有效降低闲置资源成本。为了达到这个目标,系统需要具备哪些能力呢? 实时监控和数据分析:做到按需弹性,首先需要对把系统运行和应用运行状态监控起来,并具备监控数据的分析能力; 弹性策略设置:提供可配置的弹性策略,并根据应用运行情况设置进行合理的设置; 秒级弹性:基于监控数据分析和弹性策略设置,系统可以实现自动弹性的能力,弹性能力越强越好,能达到秒级弹性; 细粒度计量:上云的目标是降成本、提效率,因此需要配置细颗粒度的计量计费能力,支持小规格的计算资源配置才能真正达到降本的目的; 应用实例能够自动水平扩缩:上面介绍的几种能力都是基于一个前提,应用实例能够自动水平扩缩,这需要应用实例是无状态的或者系统自动维护应用的状态。 上面的几点分析可以提取几个关键词:按需弹性、细粒度计费、实时监控,这正是我们今天需要讨论的 serverless 技术所需要解决的问题,接下来我们看下阿里云现有的4个 serverless 产品形态。 阿里云的 Serverless 产品形态 ECI/Serverless Kubernetes:是面向容器的 Serverless Container,应用的载体是容器镜像,灵活性好,配合调度系统可以支持各种类型应用,无需管理底层基础架构。 函数计算:是面向函数的 Function as a Service,提供了事件驱动的编程方式,用户只需实现函数的处理逻辑,开发效率很高;按照调用量计费,可以根据业务流量平滑调整计算资源,采用 FaaS 最大的挑战是需要改变应用架构和开发交付模型。 Serverless 应用引擎(SAE):是面向应用的 Serverless 产品,用户不需要要改变应用架构和开发交付模型,只需提供应用实现,无需管理底层计算资源。SAE 提供了优化的弹性策略、支持秒级计费,并且提供了丰富的服务治理能力,可以方便地实现服务的灰度发布、熔断、降级,并与现有CI/CD系统集成。 什么是阿里云Serverless 应用引擎(SAE) Serverless 应用引擎(SAE)基于神龙裸金属服务器和 ECI 计算资源构建 Kubernetes 集群平台,并实现了多租户管理,在 Runtime 层实现了应用生命周期管理、发布策略管理、弹性伸缩、微服务管理等能力。简单讲,就是面向微服务和其他在线负载提供 Serverless 技术的落地方案。 如上图,SAE 为主流的微服务框架的应用提供了 Serverless 应用托管能力,包括 Spring Cloud、Apache Dubbo 或者阿里云 HSF 框架等,支持多种部署渠道,包括UI、云效、插件等,支持多种部署方式,包括WAR、JAR、镜像等。对于单体应用和采用 Spring Cloud、Dubbo、HSF框架开发的 Java 应用,SAE 支持零代码改造,即可完成迁移。 多租户应用托管能力实现 SAE 基于 Kubetnetes 集群对多用户提供应用托管能力,那 SAE 如何实现多租管理的呢?对于租户的隔离,主要有4个方面,包括系统隔离、数据隔离、服务隔离和网络隔离: 系统隔离:基于安全沙箱容器技术的应用运行时环境,拥有独立的内核,能够提供多租户环境下对系统调用、内核的隔离能力; 数据隔离:安全容器启动时,通过 devicemapper 在宿主机上提供一个独占的存储空间作为 rootfs; 服务隔离:SAE 命名空间是逻辑隔离环境,和微服务级别租户信息(例如T1、T2、T3)绑定,与 K8S 中 namesapce 一一对应,微服务租户信息下发到 K8S Secret 中保存; 网络隔离:SAE 命名空间和唯一的 VPC 绑定,底层通过 ENI 网卡打通同一个VPC 网络,实现不同用户的 POD 属于不同网络平台,并且 POD 和宿主机属于不同网络平面,VPC 实现用户专属网络隔离。 核心优势-免IaaS运维 用户只需对网络进行规划,无需管理底层计算资源,完成业务开发后,可以直接通过程序包或者镜像部署应用,极大提高用户开发和运维效率;SAE 对接了多个云产品,如SLB、SLS、NAT等,在应用部署时可以选择使用,可以一站式支持流量访问、日志收集、存储等能力。 核心优势-弹性能力 SAE 支持定时弹性和指标弹性功能,定时弹性适用于资源画像有周期性的应用场景,多用于证券、医疗、政府、教育等行业;指标弹性目前支持 CPU 和内存指标弹性,适用于有突发流量或典型脉冲的应用场景,多用于互联网、游戏、社交平台等行业。 核心优势-一键启停开发测试环境 企业开发测试环境一般晚上不使用,但需要长期保有应用实例,闲置资源成本高。使用 SAE 一键启停功能能够高效管理开发测试环境,按需释放闲置资源,做到节省成本。 产品数据 容器启动时长为20s:支持突发场景快速扩容,启动时长指的是 100M 大小的镜像从Pull image 到容器正常启动的耗时,不含应用启动时间。 最小实例规格为0.5C1G:支持细粒度资源诉求,0.5C1G 建议用在开发测试环境中; 多套环境按需启停,成本可以节省47%~57%:按一套环境 5 台 ECS 每天使用 8 小时,分别针对 ECS 按量付费和包年包月两种情况计算来对比资源成本,方案详情可以查看。 运维体验 ECS 应用部署方案和使用 SAE 进行应用托管方案在运维方面的对比如下: 欢迎加入 SAE 的用户交流钉钉群:23198618

优秀的个人博客,低调大师

【DevOps】第一步: 编写Dockerfile与项目实践

一、Dockerfile简介 Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。 Dockerfile分为四部分: FROM:基础镜像信息 MAINTAINER:维护者信息 RUN、COPY、ADD、EXPOSE等:镜像操作指令 CMD、ENTRYPOINT:容器启动时执行指令。 例如: FROM python:3.6 MAINTAINER cbbing <cbbing@163.com> COPY pip.conf requirements.txt /root/.pip/ #设置时区 ENV TZ=Asia/Shanghai ENV PYTHONPATH=/usr/src/app RUN mkdir -p /usr/src/app \ && pip install -r /root/.pip/requirements.txt \ && apt-get update \ && apt-get install -y supervisor \ && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \ && echo $TZ > /etc/timezone WORKDIR /usr/src/app CMD ["python"] Dockerfile指令 指令的一般格式为 INSTRUCTION arguments,指令包括 FROM、MAINTAINER、RUN 等。 1. FROM 格式为 FROM 或FROM :。第一条指令必须为 FROM 指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次)。 2. MAINTAINER 格式为 MAINTAINER ,指定维护者信息。 3. RUN 格式为 RUN 或 RUN ["executable", "param1", "param2"]。前者将在 shell 终端中运行命令,即 /bin/sh -c;后者则使用 exec 执行。指定使用其它终端可以通过第二种方式实现,例如 RUN ["/bin/bash", "-c", "echo hello"]。每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用 来换行。 4. CMD 支持三种格式CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。 5. EXPOSE 格式为 EXPOSE [...]。告诉 Docker 服务端容器暴露的端口号,供互联系统使用。在启动容器时需要通过 -P,Docker 主机会自动分配一个端口转发到指定的端口。 6. ENV 格式为 ENV 。 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。例如 ENV PG_MAJOR 9.3 ENV PG_VERSION 9.3.4 ENV TZ=Asia/Shanghai ENV PYTHONPATH=/usr/src/app 7. ADD 格式为 ADD 。该命令将复制指定的 到容器中的 。 其中 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。 8. COPY 格式为 COPY 。复制本地主机的 (为 Dockerfile 所在目录的相对路径)到容器中的 。当使用本地目录为源目录时,推荐使用 COPY。 9. ENTRYPOINT 两种格式:ENTRYPOINT ["executable", "param1", "param2"]ENTRYPOINT command param1 param2(shell中执行)。配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。 10. VOLUME 格式为 VOLUME ["/data"]。创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。 11. USER 格式为 USER daemon。指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要临时获取管理员权限可以使用 gosu,而不推荐 sudo。 12. WORKDIR 格式为 WORKDIR /path/to/workdir。为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如 WORKDIR /a WORKDIR b WORKDIR c RUN pwd 则最终路径为 /a/b/c。 13. ONBUILD 格式为 ONBUILD [INSTRUCTION]。配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。ONBUILD指令,实际上就是相当于创建一个模板镜像,后续可以根据该模板镜像创建特定的子镜像例如,Dockerfile 使用如下的内容创建了镜像 image-A。 [...] ONBUILD ADD . /app/src ONBUILD RUN /usr/local/bin/python-build --dir /app/src [...] image-A的构建过程中不执行这两条命令,但在FROM image-A的子镜像中会执行这两条命令。 二、构建镜像 docker build -t mynginx:v2019 . 注意不要少了最后面的“.” 三、Dockerfile编写建议 通过 Docker 多阶段构建将多个层压缩为一个在构建 Docker 容器时,应该尽量想办法获得体积更小的镜像,因为传输和部署体积较小的镜像速度更快。 从 Docker 1.10 开始,COPY、ADD 和 RUN 语句会向镜像中添加新层。层会占用空间,你拥有的层越多,最终的镜像就越大。Git 存储库在这方面也是类似的,存储库的大小随着层数的增加而增加,因为 Git 必须保存提交之间的所有变更。 将不经常改动的命令,比如python的reqirements.txt 依赖包,单独拎出来放在项目代码的前面。因为依赖包不经常变动,每次生成镜像时,只需将后面的项目代码copy到镜像即可。 # 方案一: FROM python:3.6 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY . /usr/src/app RUN pip install -r /usr/src/app/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ CMD python /usr/src/app/manage.py runserver 0.0.0.0:8000 # 方案二: FROM python:3.6 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY requirements.txt /usr/src/app/ RUN pip install -r /usr/src/app/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ COPY . /usr/src/app CMD python /usr/src/app/manage.py runserver 0.0.0.0:8000 方案二比方案一好,为什么?因为方案一中的requirements.txt实际项目中是很少变动,但是因为/usr/src/app的项目代码是经常变动,导致每次打包都得根据equirements.txt安装依赖包。而方案二先把requirements.txt 拷贝进来,如果requirements.txt 没改动,docker会用到之前缓存的,加快打包速度。实际运行几次打包过程,会发现速度的差异是比较明显的。 四、实践 公司现在的所有项目均以容器封装,几十个容器运行在十来台主机中,现在正在将服务器整合到kubernetes集群中,可以说一切皆容器,一切皆Docker。 1. Django项目的Dockerfile Django项目打包成Docker镜像是比较简单,主要是安装python依赖包,然后就是manage.py启动服务。Dockerfile 位于Django项目的根目录,目录结构如下: ├── requirements.txt ├── Dockerfile ├── api │ ├── __init__.py │ ├── urls.py │ ├── wsgi.py │ └── settings.py Dockerfile文件: FROM python:3.6 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY requirements.txt /usr/src/app/ RUN pip install -r /usr/src/app/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ COPY . /usr/src/app CMD python /usr/src/app/manage.py runserver 0.0.0.0:8000 2. SpringMVC项目的Dockerfile 项目运行在tomcat中。先生成war文件,转成tar.gz文件, 通过ADD命令解压到镜像中。接下来就是配置文件的替换,最后运行tomact服务。 # Version 0.1 # 基础镜像 FROM cbbing/tomcat RUN rm -rf $CATALINA_HOME/webapps/ROOT ADD ROOT.tar.gz $CATALINA_HOME/webapps/ # 配置文件替换 COPY conf/server.xml $CATALINA_HOME/conf/ COPY conf/tomcat-users.xml $CATALINA_HOME/conf/ COPY conf/jdbc.properties $CATALINA_HOME/webapps/ROOT/WEB-INF/classes/properties/ CMD ["catalina.sh", "run"] mvn.sh: 生成ROOT.tar.gz的脚本如下: cd ../myweb mvn clean mvn install -DskipTests cd .. mkdir ./ROOT cp ./myweb/target/myweb.war ./ROOT cd ROOT jar xvf myweb.war rm myweb.war cd .. tar czf ROOT.tar.gz ./ROOT rm -rf ROOT/ 3. Vue.js项目的Dockerfile 步骤如下: 下载package.json中定义的依赖 npm build生成编译后的文件到dist 基础镜像为nginx,从nginx代理静态文件 FROM nginx:1.15 MAINTAINER cbbing <cbbing@163.com> ENV LANG C.UTF-8 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone COPY nginx.conf /etc/nginx/conf.d/default.conf COPY dist /usr/share/nginx/html make.sh:制作脚本如下 #!/usr/bin/env bash echo "npm install" npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install echo "npm build" npm run build image_tag=`date +%Y%m%d` #_%H%M echo "当前时间:$image_tag" docker build -t cbbing/web_p:v${image_tag} . 4. Scrapy项目的Dockerfile scrapy项目和Django项目的差别在于启动的方式不同,这里涉及到一些配置文件。 FROM python:3.6 #设置时区 ENV TZ=Asia/Shanghai ENV PYTHONPATH=/usr/src/app RUN mkdir -p /usr/src/app \ && pip install -r /root/.pip/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ \ && apt-get update \ && apt-get install -y supervisor \ && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \ && echo $TZ > /etc/timezone WORKDIR /usr/src/app COPY . /usr/src/app COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf RUN mkdir -p /var/log/supervisor COPY scrapyd.conf /usr/local/lib/python3.6/site-packages/scrapyd/default_scrapyd.conf CMD ["/usr/bin/supervisord"] 其中用到的配置文件: supervisord.conf [inet_http_server] port=9020 username=admin password=1234 [supervisord] nodaemon=true logfile=/var/log/supervisor/supervisord.log; pidfile=/var/log/supervisord.pid; childlogdir=/var/log/supervisor [program:scrapyd] command=scrapyd loglevel=info redirect_stderr=true stdout_events_enabled=true [program:scrapyd-deploy] command=bash supervisor-scrapyd-deploy.sh startsecs = 35 loglevel=info [program:simple_http] command=/bin/bash supervisor-http-egg.sh autorestart=true startsecs=10 loglevel=info [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface scrapyd.conf [scrapyd] eggs_dir = eggs logs_dir = logs items_dir = jobs_to_keep = 20 dbs_dir = dbs max_proc = 0 max_proc_per_cpu = 4 finished_to_keep = 100 poll_interval = 5.0 bind_address = 0.0.0.0 http_port = 6800 debug = off runner = scrapyd.runner application = scrapyd.app.application launcher = scrapyd.launcher.Launcher webroot = scrapyd.website.Root [services] schedule.json = scrapyd.webservice.Schedule cancel.json = scrapyd.webservice.Cancel addversion.json = scrapyd.webservice.AddVersion listprojects.json = scrapyd.webservice.ListProjects listversions.json = scrapyd.webservice.ListVersions listspiders.json = scrapyd.webservice.ListSpiders delproject.json = scrapyd.webservice.DeleteProject delversion.json = scrapyd.webservice.DeleteVersion listjobs.json = scrapyd.webservice.ListJobs daemonstatus.json = scrapyd.webservice.DaemonStatus 参考 Dockerfile介绍 三个技巧,将 Docker 镜像体积减小 90%

优秀的个人博客,低调大师

数据中心业界的新兴趋势:从DevOps到DataOps

如今,很多企业专注于混合云存储架构,这是因为人们相信其能够应对当今IT存储的挑战:不断扩展的数据、多个站点、灵活性和规模需求,同时满足特定的性能需求。随着混合云存储架构不断扩展,人们了解如何达到这一点非常重要,因为这将指明云计算行业的发展方向。 NAS的发展早期 最早的商业存储系统是为最初的需求和情况而设计的,当时预计企业可能会管理数千个文件。即使是规模最大的企业也只采用一个存储系统来支持数百个并发用户。这些传统系统需要安排定期的维护时间,但由于很多原因而导致无法访问的情况并不罕见。 在这种情况下,人们采用的是简单的硬盘驱动器和直接连接存储(DAS),例如SCSI硬盘驱动器,它实际上只是服务器的扩展。众所周知,这是一个相对脆弱的系统,硬盘驱动器容易出现故障。然而,即使对于大多数企业来说,这本质上也是互联网兴起之前的技术,而且必须保护和管理的数据量也是最小的。 NAS的崛起 直到20世纪90年代初,NetApp和EMC等公司提供专门的文件服务器和早期的专有NAS设备才能满足日益增长的可扩展、可靠的数据访问需求。实际上,由一些工程师成立的Auspex系统公司也是首先为UNIX市场创建文件服务器的公司之一。这些解决方案是对管理数据需求的直接反应,帮助创造了数据成为“新石油”的途径。 当然,这些NAS解决方案中的大多数仅为大规模的企业设计。直到2000年代中期,中小企业和消费者市场的可行解决方案才开始上市。例如ReadyNAS和Synology。这些解决方案具有与企业NAS类似的功能,尽管容量较小,但更加注重易用性和可支付性。这些解决方案开始整合灾难恢复的在线备份解决方案。 云存储的引入 同时中小企业和消费类NAS也在发展中,面向消费者和企业的云存储服务也在掀起波澜。至少在最初推出时,Dropbox和其他公司的这些服务只是针对消费者,但最终像Box公司提供的服务也是为了满足企业云存储需求而创建的。 与IT的许多领域一样,云计算的应用也是一个颠覆性事件,为传统市场带来了可扩展性、灵活性和管理水平。然而,这个服务市场仍然有显著的缺点,在某些方面不尽人意,并且还带来了影子IT问题,这让IT经理没有良好的数据可视性和可追溯性,这是越来越重要的考虑因素,因为更加强调隐私和数据泄露。此外,每用户定价的变化也可能导致成本增加。 面向企业的混合云NAS 规模较大的企业能够通过继续依赖内部部署的存储解决方案或两种方法的结合(云计算规模和内部部署)的最佳模式来缓解性能问题。这种混合云模式在很多企业中继续获得应用。 混合云NAS支持使用内部部署的缓存来保持文件服务器的性能,同时将数据安全地存储在云中。而且它们还与标准的企业安全设置(如Active Directory)保持兼容,因此管理人员的工作流程不会更改。此外,还有一个云分布式文件系统,可以跨多个站点同步文件,将NAS架构扩展到云端和全局。Panzura和Nasuni就是企业级混合云存储解决方案的两个例子。 中小型企业/托管服务供应商的混合云NAS 尽管这种混合模式取得了成功,但由于其价格高昂,许多这样的解决方案仍然无法满足中小企业和其他企业的需求。但是,即使是中小企业也感受到通过更好地管理和保护数据来实现现代化的巨大压力。这让很多公司正在将企业级存储功能与云计算的灵活性和可靠性,以及内部部署解决方案的性能相结合。 支持隐式备份,多站点文件同步、大型文件协作和集中管理的混合云模型极大地简化了IT,使IT管理人员和服务提供商可以将时间和资源专注于业务价值创造。 接下来会发生什么? 在确定可能出现的问题时,人们可以确定一些市场压力正在影响存储的发展。首先,数据正在以指数速度增长,并将在可预见的未来继续这样做。物联网、大数据和越来越多的应用程序将增加这一增长。其次,云计算模型将进一步扩大并影响企业的架构决策和访问布局。这意味着各种规模的企业需要评估和管理它们的存储体系结构。 最大的问题仍然是性能。云计算网络是否可以提高性能,以避免不必要的内部部署?即使即将进行的5G技术等新访问模式的改进,文件数量和文件大小似乎表明这种情况不会很快发生。 原文发布时间为:2018-06-4 本文作者:Paul Tien 本文来自云栖社区合作伙伴“企业网D1Net”,了解相关信息可以关注“企业网D1Net”。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册