使用 Yii2.0 创建微服务

发布时间 - 2019-11-01 00:00:00    点击率:

概念


把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

传统的开发模式就是把所有功能都放在一个包里,基本不存在依赖,这样的优势在于开发简单,集中式管理,功能都在本地,不存在分布式的管理和调度消耗。但缺点也很明显:效率低,开发都在同一个项目改代码,相互等待,冲突不断。稳定性差,一个微小的问题,都可能导致整个应用挂掉。另外在资源利用上表现出明显的劣势,比如电商双11大促场景,下单压力非常大,评价的压力相对较少,那么我们希望临时增配应对双11的大流程,只能全部增配,而不能定点只对订单服务增配。所以微服务的架构开始慢慢流行并应用于大型的网站平台。

推荐:《Yii2.0框架入门与实战项目开发视频教程

那么引入今天的主题,Yii 如何做微服务?Yii 可以轻松使用,而不需要基本和高级模板中包含的功能。换句话说,Yii 已经是一个微框架。不需要由模板提供的目录结构与 Yii 一起工作。

安装 Yii


为您的项目创建一个目录并将工作目录更改为该路径。示例中使用的命令是基于 Unix 的,但在 Windows 中也存在类似的命令。

mkdir micro-app
cd micro-app
Note:需要一些 Composer 的知识才能继续。如果您还不知道如何使用 composer,请花些时间阅读 Composer 指南。

使用您最喜爱的编辑器在 micro-app 目录下创建 composer.json 文件并添加以下内容:

{
    "require": {
        "yiisoft/yii2": "~2.0.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
}

保存文件并运行 composer install 命令。这将安装框架及其所有依赖项。

创建项目结构


安装框架之后,需要为此应用程序创建一个入口点。入口点是您尝试打开应用程序时将执行的第一个文件。出于安全原因,建议将入口点文件放在一个单独的目录中,并将其设置为Web根目录。

创建一个 web 目录并将 index.php 放入其中,内容如下:

run();

还要创建一个名为 config.php 的文件,它将包含所有的应用程序配置:

 'micro-app',

    //设置`micro-app`的根目录
    'basePath' => __DIR__,

    // 控制器所在目录。
    'controllerNamespace' => 'micro\controllers',

    // 设置命名空间为 micro
    'aliases' => [
        '@micro' => __DIR__,
    ],

    //默认访问地址
    'defaultRoute' => 'home/index',

    'components' => [
        //请求配置
        'request' => [
            'cookieValidationKey' => 'test&123456',
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],

        //Url 美化
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
                '//'   => '/',
            ],
        ],

        //数据库配置
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=micro',
            'username' => 'root',
            'password' => '数据库密码',
            'charset' => 'utf8',
        ],
    ],

];

Info:尽管配置可以保存在 index.php 文件中,建议单独使用它。 这样它也可以用于控制台应用程序,如下所示。

您的项目现在已经准备进行编码了。尽管由您决定项目目录结构,只要您遵守命名空间即可。

创建第一个控制器


在创建控制器之前,创建一个 controllers/base 目录并创建一个基础控制器 BaseController。

然后在 controller 文件夹下面 新建一个 SiteController.php,这是默认的 控制器将处理没有路径信息的请求。

如果您想为此控制器使用不同的名称,则可以配置 yii\base\Application::$defaultRoute 进行更改。 例如,对于 HomeController 将会是 'defaultRoute' => 'home/index'。

在这一点上,项目结构应该如下所示:

micro-app/
├── composer.json
├── config.php
├── web/
    └── index.php
└── controllers/
    └── base
        └── BaseController.php
    └── HomeController.php
└── vendor

如果您尚未设置 Web 服务器,则可能需要查看Web服务器配置文件示例。 另一种选择是使用 yii serve 命令,它将使用 PHP 内置 web 服务器。 您可以通过以下方式从 micro-app / 目录运行它:

vendor/bin/yii serve --docroot=./web

在浏览器中打开应用程序URL现在应该打印出“欢迎来到 Yii2.0 微服务!”,它已经在 HomeController::actionIndex()中返回。

Info:在我们的示例中,我们已将默认应用程序名称空间 app 更改为 micro, 以表明您不受此名称的限制(如果您是这样认为), 然后调整 controllers namespace 并设置正确的别名。


# yii  # 应用程序  # 创建一个  # 您的  # 如果您  # 放在  # 都在  # 第一个  # 并将  # 不存在  # 所示 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速生成凡客建站的专业级图册?  JS实现鼠标移上去显示图片或微信二维码  如何在建站主机中优化服务器配置?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  nginx修改上传文件大小限制的方法  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Swift开发中switch语句值绑定模式  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  java ZXing生成二维码及条码实例分享  bing浏览器学术搜索入口_bing学术文献检索地址  如何快速搭建自助建站会员专属系统?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  网站制作报价单模板图片,小松挖机官方网站报价?  Java类加载基本过程详细介绍  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  如何用花生壳三步快速搭建专属网站?  详解MySQL数据库的安装与密码配置  如何在建站宝盒中设置产品搜索功能?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  如何注册花生壳免费域名并搭建个人网站?  iOS验证手机号的正则表达式  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  详解Android中Activity的四大启动模式实验简述  Laravel怎么调用外部API_Laravel Http Client客户端使用  进行网站优化必须要坚持的四大原则  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel如何与Pusher实现实时通信?(WebSocket示例)  高性能网站服务器部署指南:稳定运行与安全配置优化方案  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  QQ浏览器网页版登录入口 个人中心在线进入  如何快速搭建安全的FTP站点?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  用yum安装MySQLdb模块的步骤方法  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  ,怎么在广州志愿者网站注册?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup