用学生机搭建API微服务—使用体验

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本篇内容主要记录自己在使用阿里云学生机搭建微服务的使用体验。

自我介绍

本人就读于西北民族大学软件工程专业,目前上大三,在大二的时候初步入门了Web开发领域。刚开始是因为实习需要尽快学习相关知识,所以我自学了Node.js、TypeScript等语言,准备搭建一个后端微服务来练练手。后来在知乎上了解到阿里云对学生群体有优惠,推出了开发者成长计划中有学生的计划内容,所以我就了解了这个飞天加速计划·高校学生在家实践活动
刚开始2周的免费体验,上手部署服务器后感觉不错,故写成此文,记载自己在使用阿里云学生机搭建微服务和博客的使用体验。

注:我的ECS环境:乌兰察布站点 Ubuntu 22.04

上手ECS服务器

拿到服务器后,首先第一件事就是安装相关软件,配置相关环境。由于我是学Web开发的,Node.js是一款不错的Web开发技术栈,所以我在机器上安装了如下:

  • Node.js 18.12
  • NPM 8
  • MySQL 5.7(数据库,不是很推荐MySQL 8, 因为MySQL 8的新版Authorication机制有坑,网上资料较少)
  • Python 3(做工具脚本)
  • Git(做源码管理工具)
  • Nginx(做Web服务代理)

具体安装可以用aptsnap等包管理器。
安装时,推荐清华大学的apt源,使用如下命令可以一件将源转为清华源

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

具体过程不再赘述。但是需要注意的是,出于软件供应安全策略考虑,源发布的apt软件版本可能滞后,如果想安装Node.js、npm的话,建议遵从以下步骤:

  • 将源转为国内镜像:export NODE_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/
  • 先安装npm,用npm安装node.js版本管理工具 n
  • n安装新版Node.js:n stable
  • 设置npm淘宝代理:npm config set registry https://registry.npm.taobao.org
  • 然后更新npm:npm install npm -g

这样就可以安装到新版的npm和node.js了。
还有一个需要注意的就是,如果你用的ECS是Ubuntu18以上版本的,是apt源是默认MySQL8.0 ,无法抓取到MySQL 5.7包的。只能手动下载安装
解决办法可以参考这篇博客
安装完这些后,就可以配置软件环境了。
首先,必须给ECS开放相关端口,否则公网是无法访问到服务器内容的。
image.png
在ECS服务器->安全组->配置规则里选择快速添加,就可以添加常用软件的端口,比如MySQL的3306,HTTP服务的80端口等。
然后再测试一下公网访问,首先打开控制台,输入命令:nginx,再到浏览器中用ip地址访问:http://你的ECSIP/
如果出现下面这个页面,说明你的机器可以被公网访问到了。
image.png
然后就可以将nginx服务停止了:service nginx stop

搭建一个API微服务

我的实习内容是搭建一个新闻网站,有一项需求就是实现对新闻内容的管理:比如从新闻标题中自动推断出关键词,以便于SEO优化。所以,我就想:能不能设计一个微服务,提供一个API,以新闻标题为参数,输入以后返回推断好的关键词呢?

我对API的设计如下:

  • PATH:/get-keyword
  • Method:GET
  • Query Params:sentence:string

例如:/get-keyword?sentence=这是一个测试就是对句子这是一个测试提取关键词。
Node.js由于轻量、简单、门槛低、生态丰富、IO性能出色为特点,是搭建微服务的好工具。
结巴分词也是一个很强大的中文分词处理库,我搭建这个微服务主要依赖于这个库的实现。
首先创建一个项目目录,初始化一个npm包

npm init

然后安装Node.js的Web服务框架express.js

npm install express

安装Node.js的分词库。

npm install nodejieba

安装完后,编写主程序:

//app.js
import express from 'express'
import nodejieba from 'nodejieba'
const app = express();

app.get('/get-keyword',(req,res)=>{
        res.contentType('application/json');
        res.send(nodejieba.tag(req.query.sentence));
})

app.listen(80);// Listen to 80 Port

console.log('The Micro Service Is Running')

最后,别忘了在package.json中加一条:"type":"module";

这个微服务就搭建好了!
注意:必须停止nginx,可以使用service nginx stop命令,因为微服务和nginx都在监听80端口,会引起端口冲突。

然后运行刚才搭建的微服务:
node app.js

然后在浏览器窗口中键入搭建的API:

http://{主机ip}/get-keyword?sentence=这是一个测试
image.png
就可以看到API微服务的预览效果了!

总结

以我的经历来说,拥有一台服务器是初学者很快提升技能的一条路径。我建议对于初学者,可以先尝试着捣鼓一台服务器,可以学到很多东西。花个几十块钱买一台阿里云学生机,对自己是一场很值的投资。

以前我在去年上大二的时候偶然就买了一台服务器,一开始选的新用户优惠40元。很难想象当时我还是个菜鸡,对Linux系统操作、计算机网络、数据库、Web开发什么前端后端完全一窍不通,一听就懵。对计算机编程还仅仅停留在大一的C++、C语言、Java那种写写Hello Word,做做xx管理系统命令行输出程序的层次。
后来开始尝试实习,需要为公司开发一套新闻网站,所以我不得不学习网站是如何运作的:什么是前端?什么是后端?什么是数据库?动态页面是怎么实现的?

在焦虑下偶然看到阿里云的新用户优惠,当时还有点犹豫要不要下单。最后还是花了四十块钱下单了。事后证明,确实给我带来了不小的收获。老师们不教我,视频讲的又花里胡哨,也没有靠谱的入门教程,我就只能自学搭建网站,从nginx到Apache再到PHP,最后用PHP成功写了个动态页面,在网上搜了一大堆教程博客改Nginx配置、学习HTTP,学习PHP,终于部署到公网上,还给自己买了个域名,能在别的设备上通过网址就能访问我搭建的网站,那一刻,内心是挺高兴的,自学了一段时间,终于入门Web开发了。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
监控 测试技术 API
如何确保微服务的API版本控制策略能够适应不断变化的业务需求?
如何确保微服务的API版本控制策略能够适应不断变化的业务需求?
|
14天前
|
监控 测试技术 API
如何确保微服务的API版本控制策略能够适应不断变化的业务需求
如何确保微服务的API版本控制策略能够适应不断变化的业务需求
40 10
|
18天前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
27天前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态。
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
监控 负载均衡 应用服务中间件
探索微服务架构下的API网关设计与实践
在数字化浪潮中,微服务架构以其灵活性和可扩展性成为企业IT架构的宠儿。本文将深入浅出地介绍微服务架构下API网关的关键作用,探讨其设计原则与实践要点,旨在帮助读者更好地理解和应用API网关,优化微服务间的通信效率和安全性,实现服务的高可用性和伸缩性。
44 3
|
1月前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
59 2
|
2月前
|
API
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态。
|
2月前
|
JSON 测试技术 API
探索微服务架构下的API设计最佳实践
微服务架构的普及带来了开发灵活、可扩展的系统的新机遇,但同时也对API设计提出了更高的要求。有效的API设计不仅影响系统的可维护性和可扩展性,还直接影响开发效率和用户体验。本文将深入探讨在微服务架构下如何设计高效、可靠的API,重点介绍RESTful API设计原则、版本控制策略、身份认证机制及错误处理最佳实践,并结合实际案例提供具体的实现建议。
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。