文章插图
导读:微服务遵循领域驱动设计(DDD),与开发平台无关 。Python/ target=_blank class=infotextkey>Python 微服务也不例外 。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易 。
本文字数:12786,阅读时长大约: 15分钟
微服务遵循领域驱动设计(DDD),与开发平台无关 。Python 微服务也不例外 。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易 。本系列的第 10 部分演示了如何将用户管理系统的查找服务作为 Python 微服务部署在 Kube.NETes 上 。
微服务架构的强大之处在于它的多语言性 。企业将其功能分解为一组微服务,每个团队自由选择一个平台 。
我们的用户管理系统已经分解为四个微服务,分别是添加、查找、搜索和日志服务 。添加服务在 JAVA 平台上开发并部署在 Kubernetes 集群上,以实现弹性和可扩展性 。这并不意味着其余的服务也要使用 Java 开发,我们可以自由选择适合个人服务的平台 。
让我们选择 Python 作为开发查找服务的平台 。查找服务的模型已经设计好了(参考 2022 年 3 月份的文章),我们只需要将这个模型转换为代码和配置 。
Pythonic 方法
Python 是一种通用编程语言,已经存在了大约 30 年 。早期,它是自动化脚本的首选 。然而,随着 Django 和 Flask 等框架的出现,它的受欢迎程度越来越高,现在各种领域中都在应用它,如企业应用程序开发 。数据科学和机器学习进一步推动了它的发展,Python 现在是三大编程语言之一 。
许多人将 Python 的成功归功于它容易编码 。这只是一部分原因 。只要你的目标是开发小型脚本,Python 就像一个玩具,你会非常喜欢它 。然而,当你进入严肃的大规模应用程序开发领域时,你将不得不处理大量的
if
和else
,Python 变得与任何其他平台一样好或一样坏 。例如,采用一种面向对象的方法!许多 Python 开发人员甚至可能没意识到 Python 支持类、继承等功能 。Python 确实支持成熟的面向对象开发,但是有它自己的方式 -- Pythonic!让我们探索一下!领域模型
AddService
通过将数据保存到一个 MySQL 数据库中来将用户添加到系统中 。FindService
的目标是提供一个 REST API 按用户名查找用户 。域模型如图 1 所示 。它主要由一些值对象组成,如User
实体的Name
、PhoneNumber
以及UserRepository
。文章插图
图 1: 查找服务的域模型
让我们从
Name
开始 。由于它是一个值对象,因此必须在创建时进行验证,并且必须保持不可变 。基本结构如所示:-
class Name:
-
value: str
-
def __post_init__(self):
-
if self.value is None or len(self.value.strip()) < 8 or len(self.value.strip()) > 32:
-
raise ValueError("Invalid Name")
Name
包含一个字符串类型的值 。作为后期初始化的一部分,我们会验证它 。Python 3.7 提供了
@dataclass
装饰器,它提供了许多开箱即用的数据承载类的功能,如构造函数、比较运算符等 。如下是装饰后的Name
类:-
from dataclasses import dataclass
-
@dataclass
-
class Name:
-
value: str
-
def __post_init__(self):
-
if self.value is None or len(self.value.strip()) < 8 or len(self.value.strip()) > 32:
-
raise ValueError("Invalid Name")
以下代码可以创建一个
Name
对象:-
name = Name("Krishna")
value
属性可以按照如下方式读取或写入:-
name.value = https://www.isolves.com/it/cxkf/yy/Python/2022-10-20/"Mohan"
-
print(name.value)
Name
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Adobe的人工智能原型可将物体粘贴到照片上 同时添加逼真的照明和阴影
- 适合在家里养的小宠物有哪些,有什么适合家里养的小动物-
- 谢芳|妻子刚生下女儿,就对丈夫说:先给我10万,然后再买一个房子写上我的名字
- 麻将桌上老赢钱的人有什么特点?
- 扑克争上游基本玩法
- 葫芦在家居风水里有什么作用?该放在什么位置?
- 30年前的一分钱现在值多少钱?有没有收藏价值?
- 郭碧婷和向佐在一起多久结婚,郭碧婷向佐结婚了吗-
- 百慕大三角有人吗,百慕大三角存不存在-
- 项羽在什么战役中失败,项羽在楚汉之争中最终失败的原因是什么-