Good in study, attitude and health

服务开发技术2023

一【8*5分】

  • 面向服务的三种角色和三种操作
    • 面向服务架构中的三个角色是:
      • 服务使用者:服务使用者可以是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对注册中心中的服务的查询,获得服务描述(接口契约),通过传输绑定服务,并且调用获得服务的功能。
      • 服务提供者:服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。
      • 服务注册中心:服务注册中心是服务发现的支撑者。它包含一个可用服务的存储库,以及提供服务使用者查找服务和服务提供者发布服务的接口。
    • 面向服务架构中的三个操作是:
      • 发布:为了使服务可访问,需要将服务描述发布到一个公共空间(服务注册中心)以使服务使用者可以发现和调用它。
      • 发现:服务请求者通过查询服务注册中心来找到满足其要求和标准的服务,获取服务的描述文件并定位服务端口。
      • 绑定和调用:在检索完服务描述之后,服务使用者继续根据服务描述中的信息来绑定协议、调用服务。
  • 服务在软件交互操作的作用
    • 服务可以支持软件的互操作性,使得不同来源、不同平台、不同语言的服务可以通过标准化的接口和协议进行交互和组合。服务中的三种协议的本质就是软件互操作性和可复用性。
    • Chat:功能扩展与业务逻辑实现;数据交换与共享;跨平台兼容;分布式系统支持;安全性和访问控制;性能优化和扩展性
  • ROA与RPC的区别(2022)

  • OpenAPI作用(2022)

  • HTTP幂等性操作
    • PUT、DELETE、GET、HEAD、OPTIONS 和 TRACE
  • Restful服务开发步骤 1.资源分析与设计 2.暴露资源可执行接口 3.设计客户端表述 4.设计发给客户端的表述 5.多种资源整合到一起 6.规划服务交互的响应

  • SOA协议(至少三种)
    • SOAP、UDDI、WSDL
  • 微服务架构的特点(至少两种)(2022)

二【15分】 618 将至,这段时期的交易量将会是平常的 10 倍,如果让你担任电商平台服务的设计,你会采用哪些技术手段,体现RESTful的什么特性 1. 微服务架构:采用微服务架构可以将系统拆分为多个小型服务,每个服务专注于特定的业务功能。这样可以提高系统的灵活性和可维护性,并且能够更好地处理高流量情况下的请求。 2. 缓存策略:使用缓存技术(如 CDN、Redis、Memcached 等)来缓存静态内容、频繁访问的数据或者计算结果,减轻数据库和服务端的压力,提高响应速度和用户体验。 3. 异步方式 4. 无状态 5. 状态性转移(模仿咖啡的例子,换个应用场景而已)

三【15分】 RESTful 服务的安全性设计需要考虑的三个方面?以及这三个方面可采取的措施

  1. 数据传输安全 (Data in Transit Security) 强制所有通信都通过 HTTPS 进行。HTTPS 使用 TLS/SSL 协议对客户端和服务器之间的所有通信进行加密。 - 加密 (Encryption): 防止中间人攻击窃听敏感数据。 - 数据完整性 (Data Integrity): 确保数据在传输过程中不被篡改。 - 身份验证 (Authentication): 服务器通过证书向客户端证明其身份,客户端也可以通过证书向服务器证明身份(双向认证)。
  2. 身份验证 (Authentication) 身份验证是确认用户或客户端是谁的过程。在 RESTful API 中,由于是无状态的,每次请求都需要某种方式来验证请求的来源。
    • 措施: 这是 RESTful API 最常用且推荐的方式。客户端在成功登录后获得一个访问令牌(Access Token),后续所有请求都将此令牌包含在 HTTP 请求头中(例如 Authorization: Bearer <token>)。
    • 常见实现:
      • JWT (JSON Web Tokens): JWT 是一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。它包含签名,因此可以验证其内容的完整性。
      • OAuth 2.0: OAuth 2.0 是一个授权框架,允许第三方应用程序在不获取用户凭据的情况下访问用户的受限资源。它通常与 JWT 结合使用,OAuth 用于授权流程,而 JWT 用于承载访问令牌。
        • API Key 身份验证 (API Key Authentication - 适用于服务间调用):
    • 措施: 为每个合法的客户端(通常是其他服务或应用程序)分发一个唯一的 API Key。客户端在每次请求时将此 Key 包含在请求头、查询参数或请求体中。
  3. 授权 (Authorization) 授权是决定经过身份验证的用户或客户端是否有权执行特定操作或访问特定资源的过程。数据完整性则确保数据在存储和处理过程中未被未经授权的方式修改或损坏。
    • 基于角色的访问控制 (RBAC) 或基于属性的访问控制 (ABAC):
    • 措施: 定义不同的用户角色(如管理员、普通用户、访客),并为每个角色分配不同的权限集。或者更细粒度地,基于用户或资源的属性来决定访问权限。
    • 实施细节: 在 API 网关层或业务逻辑层实现权限检查。每个API端点都需要验证当前用户是否具有执行该操作所需的权限。
    • 例子: 只有管理员角色才能访问 DELETE /users/{id},而普通用户只能访问 GET /users/{id} (自己的信息)。

四【3*5分】

  • 什么是资源(2022)
  • 什么是资源的表述
  • 面向资源架构举例说明有哪些应用场景 ROA 适用于提供简单功能、高效率、安全性要求不是很严格、易扩展的 web 服务 五【5+10分】 @POST @PATH @Produces @PathParam

类似如下代码:

@Path("/users/{username}")
public class UserResource{
    @GET
    @Produces("text/xml")
    public String getUser(@PathParam("username") String username){
        ...
    }
}
  1. 实现了什么功能
  2. 各个注解的作用