Commit Graph

82 Commits

Author SHA1 Message Date
winlin
10c0b66c0f Fix WHIP with transcoding bug. v7.0.92 (#4495) 2025-09-21 08:58:22 -04:00
Winlin
d4d1d5d8b5
AI: Move some app files to kernel. v7.0.86 (#4486)
Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-13 10:26:47 -04:00
Winlin
2384f3fb06
AI: Fix naming problem for app module. v7.0.85 (#4485)
Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-12 19:44:43 -04:00
Winlin
6e1134fe9b
Use clang format. v7.0.52 (#4433)
---------

Co-authored-by: ChenGH <chengh_math@126.com>
2025-08-11 23:19:19 -04:00
ChenGH
13597d1b7f
update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 (#4271)
update copyright to 2025

---------

Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlinvip@gmail.com>
2025-01-14 17:35:18 +08:00
Winlin
2e4014ae1c
Proxy: Support proxy server for SRS. v7.0.16 (#4158)
Please note that the proxy server is a new architecture or the next
version of the Origin Cluster, which allows the publication of multiple
streams. The SRS origin cluster consists of a group of origin servers
designed to handle a large number of streams.

```text
                         +-----------------------+
                     +---+ SRS Proxy(Deployment) +------+---------------------+
+-----------------+  |   +-----------+-----------+      +                     +
| LB(K8s Service) +--+               +(Redis/MESH)      + SRS Origin Servers  +
+-----------------+  |   +-----------+-----------+      +    (Deployment)     +
                     +---+ SRS Proxy(Deployment) +------+---------------------+
                         +-----------------------+
```

The new origin cluster is designed as a collection of proxy servers. For
more information, see [Discussion
#3634](https://github.com/ossrs/srs/discussions/3634). If you prefer to
use the old origin cluster, please switch to a version before SRS 6.0.

A proxy server can be used for a set of origin servers, which are
isolated and dedicated origin servers. The main improvement in the new
architecture is to store the state for origin servers in the proxy
server, rather than using MESH to communicate between origin servers.
With a proxy server, you can deploy origin servers as stateless servers,
such as in a Kubernetes (K8s) deployment.

Now that the proxy server is a stateful server, it uses Redis to store
the states. For faster development, we use Go to develop the proxy
server, instead of C/C++. Therefore, the proxy server itself is also
stateless, with all states stored in the Redis server or cluster. This
makes the new origin cluster architecture very powerful and robust.

The proxy server is also an architecture designed to solve multiple
process bottlenecks. You can run hundreds of SRS origin servers with one
proxy server on the same machine. This solution can utilize multi-core
machines, such as servers with 128 CPUs. Thus, we can keep SRS
single-threaded and very simple. See
https://github.com/ossrs/srs/discussions/3665#discussioncomment-6474441
for details.

```text
                                       +--------------------+
                               +-------+ SRS Origin Server  +
                               +       +--------------------+
                               +
+-----------------------+      +       +--------------------+
+ SRS Proxy(Deployment) +------+-------+ SRS Origin Server  +
+-----------------------+      +       +--------------------+
                               +
                               +       +--------------------+
                               +-------+ SRS Origin Server  +
                                       +--------------------+
```

Keep in mind that the proxy server for the Origin Cluster is designed to
handle many streams. To address the issue of many viewers, we will
enhance the Edge Cluster to support more protocols.

```text
+------------------+                                               +--------------------+
+ SRS Edge Server  +--+                                    +-------+ SRS Origin Server  +
+------------------+  +                                    +       +--------------------+
                      +                                    +
+------------------+  +     +-----------------------+      +       +--------------------+
+ SRS Edge Server  +--+-----+ SRS Proxy(Deployment) +------+-------+ SRS Origin Server  +
+------------------+  +     +-----------------------+      +       +--------------------+
                      +                                    +
+------------------+  +                                    +       +--------------------+
+ SRS Edge Server  +--+                                    +-------+ SRS Origin Server  +
+------------------+                                               +--------------------+
```

With the new Origin Cluster and Edge Cluster, you have a media system
capable of supporting a large number of streams and viewers. For
example, you can publish 10,000 streams, each with 100,000 viewers.

---------

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-09-09 12:06:02 +08:00
Winlin
6834ec208d
SmartPtr: Use shared ptr to manage GB objects. v6.0.126 (#4080)
The object relations: 

![gb](https://github.com/ossrs/srs/assets/2777660/266e8a4e-3f1e-4805-8406-9008d6a63aa0)

Session manages SIP and Media object using shared resource or shared
ptr. Note that I actually use SrsExecutorCoroutine to delete the object
when each coroutine is done, because there is always a dedicate
coroutine for each object.

For SIP and Media object, they directly use the session by raw pointer,
it's safe because session always live longer than session and media
object.

---

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-06-12 22:40:20 +08:00
winlin
2a2da2253f Switch to 2013-2024. v6.0.109 2024-01-01 10:51:24 +08:00
winlin
29eff1a242 Refine LICENSE. 2023-10-23 14:33:19 +08:00
winlin
c46ef81ff2 SRS5: Update license date to 2023. v5.0.123
PICK 72f8ed4916
2023-01-01 08:56:20 +08:00
winlin
dc20d5ddbc ST: Support set context id while thread running. v5.0.72 2022-10-02 10:05:01 +08:00
winlin
0a025fc4b6 Remove unneccessary depends headers. 2022-08-09 18:32:01 +08:00
winlin
d117145b95 Update date from 2021 to 2022. 2022-06-20 19:22:25 +08:00
winlin
d5c86dc5fa Switch LICENSE from MIT to **MIT or MulanPSL-2.0**. v5.0.21 2022-01-13 18:40:22 +08:00
winlin
716e578a19 Squash: Fix bugs 2021-12-26 17:30:51 +08:00
winlin
93242918ad Squash: For #1708 2021-11-15 11:10:44 +08:00
winlin
523b055c06 Squash: Support RPM. Fix bugs. 2021-11-04 07:37:17 +08:00
Winlin
c8a1e0f3da
Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8 (#2464)
* Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8

* Update README.md

* Update README.md

* Refine format for AUTHORS.md
2021-07-08 14:30:47 +08:00
winlin
15901cacee SquashSRS4: Use SPDX-License-Identifier: MIT. 5.0.3 2021-05-31 13:42:20 +08:00
winlin
8b74c7cb89 SquashSRS4: Happy 2021 2021-04-16 09:29:43 +08:00
winlin
dc93836489 SquashSRS4: Refine DTLS init, use specified API by role 2021-03-09 12:01:23 +08:00
winlin
f4f85a98d2 Perf: Refine player cycle, use fast coroutine 2021-02-27 17:40:19 +08:00
winlin
0a82719bd3 Refine connection structure 2020-11-04 18:15:43 +08:00
winlin
97880f6bb7 ST: Allow set the default stack size 2020-10-22 17:06:36 +08:00
winlin
64705d1cc8 RTC: Refine resouce management 2020-09-19 10:30:05 +08:00
winlin
bbc168d980 RTC: Refine generate_id, never set the cid for current thread 2020-07-09 18:11:49 +08:00
winlin
6624b8acca Log: Use object as context id for complex context 2020-07-05 23:26:55 +08:00
winlin
8a0c2e01f8 Log: Change cid from int to string 2020-06-18 11:45:43 +08:00
winlin
10464a5fbe Always use string instance to avoid crash risk. 3.0.95 2020-01-05 22:17:15 +08:00
winlin
d783a12f89 Happy 2020 2019-12-30 10:10:35 +08:00
winlin
7037f6a197 Cover more ST Coroutine code 2019-04-07 15:22:09 +08:00
winlin
1ce040cc2c Cover more ST Coroutine code 2019-04-07 14:35:11 +08:00
winlin
3d5508e088 Cover more ST Coroutine code 2019-04-07 13:52:16 +08:00
winlin
a9a720e32f Cover ST Coroutine and time unit. 3.0.48 2019-04-07 12:59:37 +08:00
winlin
f2b4bc7110 Fix #1304, Fix ST coroutine pull error. 3.0.47 2019-04-06 16:10:33 +08:00
winlin
b2d1d84634 Change to 2019 2019-01-01 21:37:28 +08:00
winlin
ca1395a807 Change date from 2017 to 2018 2018-01-07 10:58:53 +08:00
winlin
9db2a04c3b For #913, coroutine support complex error. 2017-06-11 18:44:20 +08:00
winlin
9ca36970aa Fix #908, use empty coroutine to avoid NULL pointer. 2017-06-04 19:13:56 +08:00
winlin
1bf99e8f3e For #907, Wrap ST, only use in service ST. 2017-05-30 09:05:02 +08:00
winlin
ea9a5f26d9 For #906, #902, use coroutine for reusable thread 2017-05-29 20:33:32 +08:00
winlin
44f542f77f For #906, #902, replace the endless thread with coroutine 2017-05-29 17:56:26 +08:00
winlin
fc380fe48d For #906, #902, refine thread object. 2017-05-29 17:19:06 +08:00
winlin
e3526c0cf6 For #820, modules use service only. 2017-03-26 13:40:39 +08:00
winlin
0a57a46016 Refine LICENSE 2017-03-25 21:29:29 +08:00
winlin
f32aab3d92 For #299, refine code. 2017-03-25 17:21:39 +08:00
Chengdong Zhang
8ad934a8a4 srs_info use not available variable (#813)
srs_info use not available variable.
Variable has been removed or changed.
2017-03-24 23:42:37 -05:00
winlin
308c6fee18 Fix #786, simply don't reuse object. 3.0.20 2017-03-02 16:43:06 +08:00
winlin
44014683e1 Refine thread. 2017-03-01 12:23:44 +08:00
winlin
99c13fb1c1 convert ms to us for st 2017-01-19 15:51:55 +08:00