原则

Principle

简洁性:保持代码简洁明了,避免过度复杂的逻辑和结构。简洁的代码易于理解、维护和扩展,减少出错的可能性。

可读性:编写易于阅读和理解的代码。使用有意义的变量名、清晰的注释和良好的代码布局,让其他开发者能够快速理解代码的功能和意图。

可维护性:设计软件时要考虑未来的维护需求。代码结构应具有良好的模块化和分层,便于修改和更新功能,而不影响整个系统的稳定性。

可扩展性:构建具有灵活性和可扩展性的架构,以便能够轻松添加新的功能和特性,适应不断变化的业务需求。

可靠性:确保软件在各种条件下都能稳定可靠地运行,处理错误和异常情况,避免系统崩溃或数据丢失。

性能效率:优化代码和算法,提高软件的运行速度和资源利用率,以满足用户对响应时间和系统效率的要求。

安全性:重视数据安全和用户隐私保护,采用加密、访问控制等措施,防止数据泄露和恶意攻击。

复用性:尽量复用已有的代码和组件,减少重复开发,提高开发效率,同时保证代码的一致性和稳定性。

测试驱动:在开发过程中,先编写测试用例,然后根据测试结果进行代码开发,确保代码的正确性和稳定性。

团队协作:鼓励开发团队成员之间的良好沟通和协作,共同解决问题,遵循统一的开发规范和流程。

用户需求导向:始终以满足用户需求为核心,深入了解用户的期望和使用场景,开发出符合用户期望的软件产品。

持续改进:不断对软件进行评估和改进,根据用户反馈和业务变化,优化软件的功能和性能。

敏捷开发:采用敏捷方法,快速迭代,适应变化,及时交付有价值的软件产品。

设计模式:合理运用常见的设计模式,解决软件设计中的常见问题,提高代码质量和可维护性。

数据一致性:确保数据在整个系统中的一致性和准确性,避免数据冲突和错误。

版本控制:使用有效的版本控制系统,管理代码的变更历史,便于回溯和协作。

兼容性:考虑软件与不同操作系统、硬件和其他相关软件的兼容性,扩大软件的适用范围。

可部署性:使软件易于部署到不同的环境和平台,减少部署过程中的复杂性和错误。

netcore image

微服务现在已经是各种互联网应用首选的云架构组件,无论是BAT还是 滴滴、美团 ,微服务都是重要的一环。

微服务架构按照功能和业务将应用程序分离成若干个部分,使各个部分之间松绑。

一个典型的简单微服务架构至少有UI层、网关层、反向代理、微服务集群、互操作性部分组成。

1. UI 层:即前端视觉层,包括 web 端网页、手机APP以及PC客户端。

2. 网关层:网关层类似我们家里用的路由器,可以将入站请求重定向到目标为服务,并将站内的微服务进行整合打包输出到站外。UI层一般会通过 HTTP/HTTPS 协议访问网关向公网暴露的接口。此外,网关还应该具有鉴权的功能。

3. 反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。通过在网络各处放置反向代理节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

4. 微服务集群:根据需求不同,微服务集群中会包含至少1个微服务实例,通过负载平衡将请求分配到每个实例上。如果使用Docker容器服务,则微服务集群中至少包含一个Docker实例,配合负载平衡,我们可以动态的决定要启用多少个Docker实例,并在不需要的时候销毁冗余的实例,提供完全自动化的弹性计算能力。

5. 互操作性:微服务之间一般选用 HTTP/HTTPS 或者 RPC 作为互操作协议,使用JSON或者ProtoBuf序列化对象。由于微服务都部署在同一个内网之中,性能损耗几乎可以忽略不计,如果选用RPC + ProtoBuf 的交互方案,延迟会更低。